最近手頭項目須要用到一個上位機,須要在上位機上實現遠程訪問及視頻監控。其中視頻監控採用了網上資料較多的mjpg_streamer進行視頻處理。在使用中遇到許多坑也一併記錄下來。html
首先安裝依賴環境和檢測環境,裝全點沒壞處:) web
sudo apt-get install subversion sudo apt-get install libv4l-dev sudo apt-get install libjpeg8-dev sudo apt-get install imagemagick sudo apt-get install fswebcam sudo apt-get install v4l-utils
sudo apt-get install build-essential make
安裝完成後,開始下載代碼並進行編譯chrome
cd ~/ mkdir code cd code svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ cd mjpg-streamer/mjpg-streamer make USE_LIBV4L2=true clean all sudo make DESTDIR=/usr install
執行完sudo make DESTDIR=/usr install 後信息以下:瀏覽器
mjpg-streamer# sudo make DESTDIR=/usr install install --mode=755 mjpg_streamer /usr/bin install --mode=644 input_uvc.so output_file.so output_udp.so output_http.so input_testpicture.so input_file.so /usr/lib/ install --mode=755 -d /usr/www install --mode=644 -D www/* /usr/www
如遇編譯失敗再裝下面的依賴包,有的人說要下依賴包從新編譯,具體是否好用未測試,發現有這個方法就不用作那麼多事了bash
sudo apt-get install libjpeg-dev
如今就能夠進行測試了:ide
# ls /dev/video* /dev/video0
# fswebcam -v
mjpg_streamer -i "/usr/lib/input_uvc.so -d /dev/video0 -r 320x240 -f 15" -o "/usr/lib/output_http.so -w /usr/www" mjpg_streamer -i "/usr/lib/input_uvc.so -d /dev/video0 -r 640x480 -f 15" -o "/usr/lib/output_http.so -w /usr/www" mjpg_streamer -i "/usr/lib/input_uvc.so -d /dev/video0 -r 640x480 -f 25" -o "/usr/lib/output_http.so -w /usr/www" mjpg_streamer -i "/usr/lib/input_uvc.so -d /dev/video0 -r 1024x768 -f 15" -o "/usr/lib/output_http.so -w /usr/www" mjpg_streamer -i "/usr/lib/input_uvc.so -d /dev/video0 -r 1024x768 -f 30" -o "/usr/lib/output_http.so -w /usr/www"
結果svn
MJPG Streamer Version: svn rev: 3:172 i: Using V4L2 device.: /dev/video0 i: Desired Resolution: 640 x 480 i: Frames Per Second.: 15 i: Format............: MJPEG 。。。。。。 o: www-folder-path...: /usr/www/ o: HTTP TCP port.....: 8080 o: username:password.: disabled o: commands..........: enabled
訪問(注意用FireFox或chrome,其它瀏覽器支持不是很好),看到下面的就對了:測試
http://ip:8080 (這個端口取決於你的設置 -p 若是未設置默認爲8080)ui
參數:.net
-i : uses input_uvc.so (the USB Webcam) as input -o : output_http.so for the output (sending the images to a Web server -w : the directory, which has the HTML, CSS, and JS files: /usr/local/www You can cancel the stream by pressing Ctrl+C. If you want to experiment with some other options, some are listed below: -b : runs in the background -p : set a default port instead of the default 8080 -c : prompts for username:password -yYUYV : enables YUYV format and disables MJPEG mode -f : framerate (in seconds)
遇到的問題:
一、CPU居高不下:
兩種緣由:(1)參數內加入了 -y 開啓了 yuv模式,我測試結果是一個CPU跑到了90% ,能夠看到程序啓動後的信息:
(2)攝像頭不支持mjpeg,這樣的話CPU也會居高不下。採用上面的fswebcam -v進行檢測,若是不支持mjpeg的話就不要用了
i: Format............: MJPEG 若是不是這個就是有可能你帶Y參數或是攝像頭不支持
測試:使用支持MJPEG攝像頭開啓 -y參數:
關閉-y參數:
二、找不到網頁
路徑問題,在參數 -w後面跟的要麼應該指向你創建的code文件夾下的www目錄或是編譯過程結果中的目錄,個人結果顯示的是/var/www
三、其它機器訪問不了默認端口:
檢測系統默認安裝的ufw是否已啓動,啓動的話先關了再試
基本上就這不少了:)
轉載請註明:http://www.cnblogs.com/forrestsun/p/4995083.html