当前位置: 代码迷 >> 综合 >> mjpg streamer(OpenWRT)
  详细解决方案

mjpg streamer(OpenWRT)

热度:4   发布时间:2024-01-18 19:10:10.0

软件介绍

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