[经验分享] 【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A 7. 浏览器中播放USB摄像头实时视频

乘简   2023-12-2 11:30 楼主

1、我最初的方案是采用webrtc,做为手机监控开发板的音视频功能,花了1个礼拜时间,发现这货在开发板上打开浏览器,在浏览器中打开摄像头,需要点确认,这还是小问题,但开发板的mic声音很小,用来学习还差不多,用来对话,还是算了吧,而且webrtc的信令服务器,中转服务器要是放到云服务器上,需要开通https功能,局域网中开发板与手机连通后,占用CPU也是相当的高,两端音视频连通后,占用230%以上的CPU,由于时间紧迫,不得不放弃了

 

2、后来采用ffmpeg推流,nginx做为服务器,但这样的话,如果我手机端还要在视频界面中加入遥控器功能的话,代码不好控制,放弃

 

3、于是我又采用了livego方案,采用livego做为媒体服务器,go代码开源,采用mmjpeg推流,把视频推流到livego中,但在播放的时候,CPU占用也是200%+,但延时很大,如果把视频文件推流到livego中,再网页中播放,延时是看不出来的,如果把USB摄像头的视频推流到livego中,延时大是没法承受的,比如控制一台小车,手机中看到小车的摄像头中,离撞墙还有很远,结果控制小车前进,但其实看到的画面是2秒后的画面,结果小车早就撞上去了,花了几天时间还是只能放弃

 

3、最后不得不选择之前看不上的mjpge-streamer这个方案,c代码开源,测试下来很满意,安装配置方法如下:

  下载源代码 git clone https://github.com/jacksonliam/mjpg-streamer.git

//下载源代码
git clone https://github.com/jacksonliam/mjpg-streamer.git

//安装支持库
sudo apt-get install cmake libjpeg-dev

//进入文件夹
cd mjpg-streamer/mjpg-streamer-experimental

//编译,会多出来mjpg_stream文件,还有很多.so文件
make
sudo make install

//运行程序,我这里采用/dev/video0,不知为什么用/dev/video1失败
./mjpg_streamer -i "input_uvc.so -d /dev/video0" -o "output_http.so -w www"

//然后浏览器中打开,就能看到实时的画面了,而且很流畅,没有延时,CPU占用很低, 10%以下
http://192.168.31.59:8080/stream_simple.html

#注意,192.168.31.59是我开发板的IP地址

1701487801127.png  

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复