1. 準備編譯環境與Library
a.
$sudo apt-get update
b.
$sudo apt-get install
subversion
c.
$sudo apt-get install
libjpeg8-dev
d.
$sudo apt-get install
imagemagick
2.
下載 mjoeg-streamer source 並執行編譯
a.
$svn co
https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer
b.
$sudo make
è如果編譯成功,目錄中應該會多出類似:mjpg_streamer, input_uvc.so,
output_http.so ......,其中的mjpg_streamer是主程式,而那些input_xxxx.so、 output_xxxx.so 則是輸出、輸入的plugins。有了這些檔案,我們就可以將 Webcam 接上 Raspberry PI 的 USB 插槽中來測試了。
3.
測試編譯結果
a.
輸入以下指令
$./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
$./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
如果出現以下訊息
MJPG Streamer
Version: svn rev: 3:172
i: Using V4L 2
device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
i: Format............: MJPEG
Unable to set format: 1196444237 res: 640x480
Init v4L 2
failed !! exit fatal
i: init_VideoIn failed
i: Using V
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
i: Format............: MJPEG
Unable to set format: 1196444237 res: 640x480
Init v
i: init_VideoIn failed
如果有類似「Unable to set format: 1196444237 res: 640x480」這行的訊息,表示 Webcam 並不支援輸出 MJPEG 的格式,那就在指令裡加個「-y」的參數,讓它改用 YUYV 的格式。
b.
指令變更成:
$./mjpg_streamer -i "./input_uvc.so -y" -o "./output_http.so -w ./www"
$./mjpg_streamer -i "./input_uvc.so -y" -o "./output_http.so -w ./www"
如果 stream server 正常啟動的話,應該會在最後面看到底下的訊息:
o: www-folder-path...: ./www/
o: HTTP TCP port.....: 8080
o: username:password.: disabled
o: commands..........: enabled
如果正確啟動(終端機不要關掉),然後透過以下步驟驗證。
4.
透過Http server遠端觀看Webcam stream
a.
Webcam 抓到的影像可以利用由 MJPG-streamer output_http.so plugin 所提供的 HTTP server ,用網頁瀏覽器來當 client,以網址觀看 Demo 的網站。假設 Raspberry PI 的 IP 為 192.168.0.105,輸入
http://192.168.0.105:8080
http://192.168.0.105:8080
b.
在這個 MJPG-streamer Demo Pages中,我們可以看到它示範靜態影像的顯示、stream、Java、Javscript ...... 的語法,可以依需求選用。
c.
輸出結果如下,這樣表示mjpg-streamer可以順利流暢的運行,先別把它ctrl+c結束掉。在開另外一個連線進入motion結合的部分
5.
以motion進行背景監控
a.
安裝 motion
$sudo apt-get install motion
$sudo apt-get install motion
b.
編輯motion的配置檔,來啟動執行以下動作
$sudo vi /etc/motion/motion.conf
$sudo vi /etc/motion/motion.conf
Ø
啟動常駐(daemon)服務
Daemon = OFF to ON
Daemon = OFF to ON
Ø
讓非local端的連線能夠進入,
webcam_localhost = ON to OFF
webcam_localhost = ON to OFF
Ø
把8080 port(motion預設管理攝影機的頁面)給換掉,這樣才不會跟上面mjpg-streamer的port衝到(也可以改mjpg-streamer啦,看心情決定)
control_port = 8080 to 8085 (看你要改成8085之類的都可以~,不要重複就好)
control_port = 8080 to 8085 (看你要改成8085之類的都可以~,不要重複就好)
6.
把motion常駐服務給開啟
a.
變更vi /etc/default/motion
start_motion_daemon = no to yes
start_motion_daemon = no to yes
b.
啟動 motion
sudo service motion start
sudo service motion start
7.
最後到瀏覽器去看 Port 8081 Streamer.
a.
http://192.168.0.105:8081/
b.
之所以是Port 8081,
是因為 /etc/motion/motion.conf 中預設 webcam_port 為8081的緣故。
是因為 /etc/motion/motion.conf 中預設 webcam_port 為8081的緣故。
[補充]
1.
SVN: 是一個開放原始碼的版本控制系統
2.
jpeg library:
3.
ImageMagicK: 是一個強大的圖像處理工具包。它提供了幾個非常方便的命令行命令: display,
animate,import, montage,mogrify,identify等,可以進行圖像的顯示,縮放,旋轉,調色,加框,加註釋等,還能製作GIF動畫,圖像索引,能自動生成圖像.
4.
MJPEG-Streamer:
可以將 Webcam的JPEG影像以單張單張儲存或是多張組合成以Motion JPEG Video (MJPG) 編碼的 Stream ,另外如你的 Camera 有支援HD可以輸入用以下指令。
以羅技C310,最高可以支援到1280*960 @ 30fps,指令如下:
以羅技C310,最高可以支援到1280*960 @ 30fps,指令如下:
$./mjpg_streamer -i
"./input_uvc.so -f 30 -r 1280x960" -o "./output_http.so -w
./www"
5.
MJPEG-Stream 參數說明,
a.
input_uvc.so帶的參數有以下幾種:
Ø
-d => 手動指定要取得哪個裝置的訊號(例如/dev/video0,預設不指定就是這個)
Ø
-r => 解析度,可以用以下字串直接帶入QSIF QCIF CGA QVGA CIF
VGA SVGA XGA SXGA。或者你也可以手動輸入。例如1920*1080
Ø
-f => fps,不用解釋了吧
Ø
-y => 有些cam止吐YUYV格式,不支援mjpg的格式,如果你在開起攝影機有些狀況,可以試試看下一下這個參數
Ø
-q => 手動指定YUYV格式的JPEG品質,預設是80,如果你的裝置是支援mjpg,但還手動去指定他…可能會被換成YUYV格式輸出,這時候畫面可能會變得極度Delay..(畫質也不會比mjpg好…)
Ø
-l => 手動指定cam的led是否要亮(有些不一定會有用),後面可以接on或者off或者blink,沒指定則為auto
b.
output_http.so帶的參數有:
Ø
-w => 後面接要開串流網頁的畫面(預設是放官方demo畫面)
Ø
-p => 就…要開到幾port,預設8080
Ø
-c => 看要不要啟動帳號管理功能,如果要,則後頭接 username:password(例如 –c jack:12345)
Ø
-n => 關閉可以執行的命令(例如設定攝影機曝光值等等)
6.
留言
張貼留言