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攝像頭(執行一次即可,無需每次開機都執行):
1 | sudo raspi-config |
進入後,將camera一項enable,然後重啟:
1 | sudo reboot |
3.安裝必要的庫
命令行直接敲以下指令:
1 2 3 4 5 6 7 | 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到本地,編譯
1 2 3 4 | sudo git clone https: //github .com /jacksonliam/mjpg-streamer .git cd mjpg-streamer /mjpg-streamer-experimental make all sudo make install |
如果是普通的USB攝像頭,這個時候應該可以使用了,在命令行輸入:
1 | . /mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www" |
如果是Raspberry Pi Camera,會報錯。
這是因為V4L driver 不支持raspberry pi的camera,所以初始化失敗。
5.解決V4L driver不支持的問題
安裝必要的庫:
1 |
curl http://www.linux-projects.org/listing/uv4l_repo/lpkey.asc | sudo apt-key add -
|
修改sources list
1 | sudo nano /etc/apt/sources .list |
在最後加上一行:
1 2 3 4 5 6 |
deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/stretch stretch main |
重啟之後:
1 2 3 4 5 6 | 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 |
再一次重啟之後:
1 2 | 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秒吧。
注意:
1 | sudo modprobe bcm2835-v4l2 |
這條命令是每一次都要先執行然後才可以打開攝像頭,不妨把它設為開機啟動執行吧。