MJPG-streamer是一个优秀的开源project,它可以通过HTTP的方式访问linux上面的兼容摄像头,从而做到远程视频传输的效果。最近导师的一个project和远程视频传输有关,于是笔者在树莓派上面搭建视频传输环境的时候直接选择了MJPG-streamer。现在将整个搭建的过程贴出来,供大家参考。
树莓派B+、树莓派原生的操作系统(官网可下载)、树莓派的专用摄像头Raspberry Pi Camera。其实现在市面上可以很容易买到的USB摄像头会更加方便,但是笔者手头上暂时只有Raspberry Pi Camera,就将就使用了,并且使用Raspberry Pi Camera由于驱动问题要比USB摄像头多几个安装步骤。
Raspberry Pi Camera插到正确位置后(注意别插反了),供电开机。用putty进入树莓派后,enable摄像头(执行一次即可,无需每次开机都执行):
sudo raspi-config
进入后,将camera一项enable,然后重启:
sudo reboot
命令行直接敲以下指令:
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
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,所以初始化失败。
安装必要的库:
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 640x480" -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
这条命令是每一次都要先执行然后才可以打开摄像头,不妨把它设为开机启动执行吧。