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