软件介绍
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