軟件介紹
mjpg-streamer 可以通過文件或者是HTTP方式訪問linux UVC兼容攝像頭。
安裝
- 在openwrt系統下,需要安裝以下攝像頭的驅動(需聯網)。
opkg install kmod-usb2
opkg install kmod-usb-ohci #一般BCM用的是ohci USB控制器
opkg install kmod-video-gspca-core
opkg install kmod-video-core
opkg install kmod-video-uvc #免驅uvc攝像頭
opkg install kmod-video-gspca-zc3xx #中微星攝像頭 如zc301 zc303 zc305
opkg install kmod-i2c-core
opkg install kmod-input-core
如果能找到 /dev/video0 的設備文件,就說明驅動已經安裝成功。
如果沒有成功,羅技的攝像頭還可以嘗試一下安裝kmod-video-pwc。
在openwrt系統下面,安裝mjpg-streamer很簡單。
opkg install mjpg-streamer
- 安裝完了之後,可使用下面指令運行啓動
/etc/init.d/mjpg-streamer start
使用
在firefox瀏覽器裏面輸入 http://192.168.1.1:8080/?action=stream,應該能看到攝像頭抓取的視頻。
這個視頻的幀數很低,顯得攝像頭反應很慢。可以修改/etc/config/mjpg-streamer裏面的fps參數。
如果想在公司訪問家裏的攝像頭,還應該修改防火牆,接受8080端口的外網請求。
添加下面配置到 /etc/config/firewall
config rule
option src wan
option proto tcp
option dest_port 8080
option target ACCEPT
然後重啓防火牆 /etc/init.d/firewall restart,就可以了。
外網訪問攝像頭的時候,如果看視頻可能速度會跟不上,可以只看截屏。http://192.168.1.1:8080/?action=snapshot
注:需要將192.168.1.1替換成路由器說使用的公網IP地址
mjpg_streamer啓動參數
修改mjpg_streamer啓動參數,在您更換攝像頭或者更高分辨率等參數時,可使用下面方法進行修改。
vi etc/init.d/fscar #此文件是我自己創建,本身不存在
關於輸入配置參數:
- y是關鍵,默認啓動是mjpeg格式,改成YUV格式
- d指定設備
- f 制定幀數,默認30幀
- r指定視頻大小,如320×240
- q指定畫質,默認80
關於輸出參數:
- p 指定端口
- w 指定網頁目錄
- c設置通過密碼訪問
免驅攝像頭(UVC標準攝像頭,標配使用此類攝像頭),使用以下啓動參數:
mjpg_streamer -b -i "input_uvc.so -r 320x240 -f 15 -y" -o "output_http.so -p 8080 -w /web"
設置開機自啓動
openwrt是基於linux內核的路由操作系統,
總結一下OpenWrt的啓動流程:1.CFE->2.linux->3./etc/preinit->4./sbin/init ->5./etc/inittab ->6./etc/init.d/rcS->7./etc/rc.d/S* ->8.經過裁剪,因此與普通linux系統文件結構有所不同。爲了添加攝像頭裝了mjpg_streamer,但是每次都要手動啓動攝像頭,實在是太麻煩了於是給它設置爲開機自啓動。
首先在/etc/init.d裏添加需要啓動的shell腳本
vim startCamera
#!/bin/sh /etc/rc.common
# /init.d/startCamera
START=50
start()
{
mjpg_streamer -b -i "input_uvc.so -r 320x240 -f 15 -y " -o "output_http.so -p 8080 -w /web"
}
stop()
{
kill all startCamera
}
之後還需要在rc.d目錄下做一個鏈接,啓動時系統會按順序啓動rc.d目錄下的腳本鏈接,對應執行init.d目錄下的啓動腳本。
(1) 進入etc文件夾
cd /etc
(2) 命令:
ln -s init.d/startCamera rc.d/S50startCamera
重啓,即可
現在實現了開機自啓動
如果想關閉的話 直接殺進程就可以了
服務啓動
/etc/init.d/mjpg-streamer enable 是設置開機自動啓動
/etc/init.d/mjpg-streamer disable 是禁止開機自動啓動
/etc/init.d/mjpg-streamer start 是現在啓動
/etc/init.d/mjpg-streamer restart 重啓
/etc/init.d/mjpg-streamer stop 停止
service mjpg-streamer start
設置開機自動啓動服務
/etc/init.d/mjpg-streamer enable
立即啓動服務
/etc/init.d/mjpg-streamer start
很像ser2net,即便拔掉攝像頭再插上也會識別。
配置用戶名和密碼
mjpg-streamer 還可以使用用戶名和密碼來訪問。
修改 /etc/init.d/mjpg-streamer 中的
[ $enabled -gt 0 -a -c $device ] && sleep 3 && $SSD -S -m -p $PIDF -q -x $PROG -- --input "input_uvc.so --device $device --fps $fps --resolution $resolution" --output "output_http.so --port $port" &爲[ $enabled -gt 0 -a -c $device ] && sleep 3 && $SSD -S -m -p $PIDF -q -x $PROG -- --input "input_uvc.so --device $device --fps $fps --resolution $resolution" --output "output_http.so --port $port -c user:pass" &
最後添加的部分就是用戶名和密碼,中間用冒號分割。重新啓動mjpg-streamer,保證配置生效。
/etc/init.d/mjpg-streamer restart