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地址