MJPG-streamer是一个优秀的开源project,它可以通过HTTP的方式访问linux上面的兼容摄像头,从而做到远程视频传输的效果。最近导师的一个project和远程视频传输有关,于是笔者在树莓派上面搭建视频传输环境的时候直接选择了MJPG-streamer。现在将整个搭建的过程贴出来,供大家参考。
1.搭建环境以及硬件设备
树莓派B+、树莓派原生的操作系统(官网可下载)、树莓派的专用摄像头Raspberry Pi Camera。其实现在市面上可以很容易买到的USB摄像头会更加方便,但是笔者手头上暂时只有Raspberry Pi Camera,就将就使用了,并且使用Raspberry Pi Camera由于驱动问题要比USB摄像头多几个安装步骤。
2.Enable树莓派摄像头
Raspberry Pi Camera插到正确位置后(注意别插反了),供电开机。用putty进入树莓派后,enable摄像头(执行一次即可,无需每次开机都执行):
sudo raspi-config
进入后,将camera一项enable,然后重启:
sudo reboot
3.安装必要的库
命令行直接敲以下指令:
sudo apt-get update sudo apt-get install subversion sudo apt-get install libjpeg8-dev sudo apt-get install imagemagick sudo apt-get install libv4l-dev sudo apt-get install cmake sudo apt-get install git
4.git开源的project到本地,编译
sudo git clone https://github.com/jacksonliam/mjpg-streamer.git cd mjpg-streamer/mjpg-streamer-experimental make all sudo make install
如果是普通的USB摄像头,这个时候应该可以使用了,在命令行输入:
./mjpg_streamer -i “./input_uvc.so” -o “./output_http.so -w ./www”
如果是Raspberry Pi Camera,会报错。
这是因为V4L driver 不支持raspberry pi的camera,所以初始化失败。
5.解决V4L driver不支持的问题
安装必要的库:
sudo wget http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc && sudo apt-key add ./lrkey.asc
修改sources list
sudo nano /etc/apt/sources.list
在最后加上一行:
deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ wheezy main 继续安装: sudo apt-get update sudo apt-get install uv4l uv4l-raspicam sudo reboot
重启之后:
sudo pkill uv4l sudo apt-get update sudo apt-get install uv4l-uvc sudo apt-get install uv4l-xscreen sudo apt-get install uv4l-mjpegstream sudo reboot
再一次重启之后:
sudo modprobe bcm2835-v4l2 ./mjpg_streamer -i “./input_uvc.so -d /dev/video0 -n -y -f 25 -r 640×480” -o “./output_http.so -n -w /usr/local/www”
然后打开浏览器输入:
http://raspberry-ip-address:8080/?action=stream
应该就可以看到Raspberry Pi Camera采集的动态视频了,延迟大概不超过0.8秒吧。
注意:
sudo modprobe bcm2835-v4l2
这条命令是每一次都要先执行然后才可以打开摄像头,不妨把它设为开机启动执行吧。
6. 参考文献
原文链接。