树莓派智能车AlphaBot教程7:mjpg-streamer 网络视频监控
wifi遥控小车,网络视频监控是必不可以的部分,这一张讲解一下如何通过树莓派摄像头实现网络视频监控。mjpg-streamer是一个网络摄像头监控软件,是很好的开源项目。通过mjpg-streamer可以非常容易实现网络视频监控功能。
启动摄像头
要实现网络视频监控首先得要有一个摄像头,可以选择USB接口的摄像头或者树莓派专用摄像头。
下面以树莓派专用摄像为例,使用树莓派摄像头前必须运行raspi-config命令启用摄像头:
=== cpp代码: ===
sudo raspi-config
选择Enable Camera。
如果是使用CSI接口的摄像头,那么系统找不到/dev/video0的设备节点。需要在/etc/modules文件中添加一行bcm2835-v4l2:
=== cpp代码: ===
sudo nano /etc/modules
加上:
bcm2835-v4l2
那么系统启动之后,系统会加载这个文件中的模块名。重启系统后会在/dev下面发现video0设备节点。(bcm2835-v4l2中的l为L的小写,不是1)
安装软件
我们示例程序中提供的软件是一件编译过的了,直接解压后既可以使用。这里作为教程再讲解一下如何编译mjpg-streamer软件。
源码地址:
http://mjpg-streamer.svn.sourceforge.net/viewvc/mjpg-streamer/
安装依赖库:
=== cpp代码: ===
pi@raspberrypi:~ $ sudo apt-get install libv4l-dev libjpeg8-dev
pi@raspberrypi:~ $ sudo apt-get install subversion
下载源码:
svn co
https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer
修改源码: mjpg-stream支持JPEG和YUV两种格式。而摄像头大多都是支持YUV的,而不是JPEG的。修改mjpg-streamer/plugins/input_uvc/input_uvc.c文件, 将V4L2_PIX_FMT_MJPEG 改成 V4L2_PIX_FMT_YUYV
vi ~/mjpg-streamer/plugins/input_uvc/input_uvc.c
编译程序:
=== cpp代码: ===
cd ~/mjpg-streamer/
make USE_LIBV4L2=true clean all
开启mjpg-streamer: sudo ./start.sh
然后在浏览器地址栏内输入树莓派ip地址,端口号8080,页面会显示关于MJPEG streamer的信息。点击Stream会实时显示摄像头拍摄的内容。
当然也可以用如下命令启动
sudo ./mjpg_streamer -i "./input_uvc.so -n -d /dev/video0 -r 640x800 -f 5" -o "./output_http.so -p 8080 -w ./www"
-i 后面是输入参数
-o 后面是输出参数
-d 后面为设备参数,此处为/dev/video0
-f 后面是帧率
-p 后边是端口号