openwrt掛載攝像頭及mjpg-streamer的密碼設置


1.openwrt掛載攝像頭

我用db120刷的openwrt版本是20121127dreambox,固件自帶mjpg-streamer及相應的luci-app-webcam。

掛載的攝像頭需要硬件支持mjpg格式。如果只支持yuy2,那么cpu的負載會比較高,因為yuy2需要cpu進行圖像的壓縮處理,而且分辨率也不如mjpg格式高。我買的是羅技最低端的c110,經測試支持mjpg。一般十幾塊錢的應該是不支持的,實驗室測試同學的thinkpad自帶攝像頭也不支持mjpg。查看是否支持mjpg可用AMCap軟件,從選項里面的視頻捕捉接口中可查看是否有mjpg,沒有就是不支持了。

c110到手后,支持插到db120的上面的usb接口,燈亮后就可以直接在  路由器ip:8080 中看到了。經測試路由器transmission掛種15個,同時局域網開mjpg-streamer監控負載在0.2左右。

2.mjpg-streamer密碼設置

我刷的固件中mjpg-streamer有個問題,就是在luci的設置中開啟登錄密碼始終沒用,重啟也無法打開。用scp連上路由器進/etc/config/mjpg-streamer看如下:

config 'mjpg-streamer' 'core'
    option 'device' '/dev/video0'
    option 'resolution' '640x480'
    option 'port' '8080'
    option 'fps' '5'
    option 'username' 'test'
    option 'PassWordLogin' '1'
    option 'enabled' 'true'
    option 'password' '123'

device--設備,resolution--分辨率,port--http訪問端口,fps--幀率,username--登錄賬號,passworelogin--是否開啟密碼,enabled--是否開啟mjpg-streamer,password--登錄密碼

根據config文件顯示確實是打開了登錄密碼的,這里找不到原因再進/etc/init.d/mjpg-streamer中查看如下:

 1 #!/bin/sh /etc/rc.common
 2 # Copyright (C) 2009 OpenWrt.org
 3 START=50
 4  
 5 SSD=start-stop-daemon
 6 NAME=mjpg_streamer
 7 PIDF=/var/run/$NAME.pid
 8 PROG=/usr/bin/$NAME
 9  
10 start() {
11     config_load mjpg-streamer
12     config_get device core device
13     config_get resolution core resolution
14     config_get fps core fps
15     config_get port core port
16     config_get_bool enabled core enabled
17     [ $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 -w /www/camwww" &
18 }
19  
20 stop() {
21     $SSD -K -p $PIDF
22     kill -9 $(cat /tmp/run/mjpg_streamer

在start函數中,看到config_get應該和config是一一對應的,所以根據config文件先加上了

config_get_bool PassWordLogin core PassWordLogin
config_get username core username
config_get password core password

執行/etc/init.d/mjpg-streamer restart后發現還是沒有出現登錄密碼。再接着分析第17行代碼,注意到

--output "output_http.so --port $port -w /www/camwww" &

這里是mjpg-streamer的輸出設置,http訪問的端口和文件夾,根據經驗,應該是在這里設置登錄的密碼,google了一番后,發現只需要加上

 -c username:password

(ps:感謝@火日攻天的提示,此處應該是-c $username:$password)

就可以使用密碼來登錄,所以修改后的第17行代碼變為

   [ $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  -w /www/camwww -c username:password" &

本以為重啟服務后就可以了,結果還是不行,在打開   路由器ip:8080 后,發現還是直接進入了攝像頭的監控畫面,並沒有彈出登陸框。看來問題總是沒那么簡單。經過多次試驗,發現是代碼的順序問題,需要把-c放到-w之前,將17行代碼修改為

 [ $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 username:password -w /www/camwww" &

在打開 路由器ip:8080 后,成功的看到了登陸框。當然,事情到這里還沒完,在這個登陸框中輸入test和123始終顯示驗證失敗。按道理有了config_get username core username和config_get password core password這兩行代碼,登錄的賬號和密碼應該是從配置文件中讀取的test和123。

好吧,在我輸入username和password這組賬號和密碼后,成功的進入了攝像頭的監控界面。再次修改17行代碼為

 [ $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 test:123 -w /www/camwww" &

打開地址,看到登陸框,輸入username和password驗證失敗,輸入test和123驗證成功,進入監控界面。

結果就是這版固件mjpg-streamer的config文件中設置賬號密碼無效,賬號和密碼要直接寫在init.d的文件中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM