mjpg streamer(OpenWRT)
軟體介紹
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