mjpg streamer(OpenWRT)

軟件介紹

mjpg-streamer 可以通過文件或者是HTTP方式訪問linux UVC兼容攝像頭。

安裝

  1. 在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
  1. 安裝完了之後,可使用下面指令運行啓動
/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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章