在网上接了第一个项目,在此记录......
目录
项目需求
前端浏览
两个后端
python后端
nginx-flv+ffmpeg后端
总结
项目需求
手机浏览器,远程查看实时监控视频、按钮控制电机、获取环境温度。
难点:
1. 远程控制,两者之间需要外网服务器来中转控制消息和传输视频,这里使用得是阿里家的服务器。
2. 视频监控,常见的视频流有rtmp、rtsp、http-flv三种传输协议,其中rtmp需要靠 Flash 播放器插件播放,遗憾Flash 于 2020 年正式结束了(但是可以用来服务端的视频推流);而rtsp不兼容HTTP,不能应用在web端。即,移动端选择http-flv视频流协议拉流。
3. web端,需要和外网服务器进行消息收发,毫无疑问使用websocket最友好。
暂时用我身边的linux机子局域网实现,后期移植到阿里家
(以上有什么更好的方法,欢迎评论区或者私聊我讨论)
前端浏览
web移动端——加载状态
个人前端设计不好,丑了凑合着看,主要是先功能实现,后期在慢慢优化。下面献上js后端代码,简短了一下代码,主要是展现思路:
//创建websocket
var ws = new WebSocket("ws://192.168.10.100:8082");
//每200毫秒执行getstate函数,获取状态值
window.setInterval(function(){getstate()},200);
//获取状态值
function getstate(){
ws.send("getstate");
......
}
//onclick事件,按钮触发,向服务器发送用户控制信息
function order(serial)
{
......
}
每200毫秒获取状态值,200毫秒延时还是有一点感觉的,可以适当减少间隔时间,但时间过于小对移动端不是很友好。
两个后端
python后端
主要用的库有:
websockets ——联络web移动端
soocket ——联络ESP32端
cv2——处理图像
pipe——使用ffmpeg将处理好的图像推流给nginx-flv
threading ——线程(开始用的是 Process 进程库,可是遇到没法共享消息的问题,移动端进程和ESP32端进程之间交流不了,索性就用了线程)
nginx-flv+ffmpeg后端
nginx-flv的安装和配置不太友好,但按照github作者的用法做就可以。
ffmpeg视频推流的安装,我试过在官网下载压缩包make编译安装,但是还有依赖包等东西的安装。。。最后用apt install ffmpeg安装,一劳永逸。
——2023.3.29
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)