Openwrt路由器挂载摄像头教程
Openwrt可以做的事情很多:VPN、离线下载、VLAN、无线中继、多拨,等等。因为比较折腾,所以适合喜欢钻研,知道怎么找资料,并且对Linux较熟悉的人使用。一般用户还是用普通路由器,或者别人帮刷好固件的路由器吧~
Openwrt还有一项功能比较吸引人,那就是挂载摄像头,实现远程实时监控。本文介绍通过mjpeg-streamer输出摄像头的实时图像,从而实现远程监控。最近还会写一篇使用motion实现自动拍照上传的教程,敬请关注本博客。
一、准备工作
首先就是要有一个刷了openwrt的路由器,固件里至少要包括下面的两个摄像头相关的内核模块:
kmod-video-core, kmod-video-uvc
以及mjpeg-streamer软件。DreamBox的0909版固件就不错,本人的HG255D路由器目前用的就是这款固件。其他型号的路由器,可以去OpenWrt中文网,以及恩山无线论坛寻找相应固件。当然,路由器自身至少要有一个USB 2.0接口。
选择kmod-video-core与kmod-video-uvc这2项
这里选择mjpg-streamer模块
其次,一个免驱并支持MJPEG输出的摄像头。这个就需要仔细挑选了。可以参考这个帖子,选择适合自己的摄像头。注意:不支持MJPEG输出的摄像头,以路由器CPU的能力,每秒也就能输出2-3帧,几乎不可用,所以务必选择正确的摄像头。本人使用的是微软的HD3000 720P高清摄像头,免驱并支持MJPEG,去除了HD5000里作用不大的自动对焦功能,价格比HD5000更加亲民。
二、测试摄像头
将摄像头插到路由器上,然后ssh到路由器上,执行logread命令,会打印出路由器开机后的终端log。在里面寻找”usbcore: registered new interface driver uvcvideo”,以及含有”/dev/video0″的字样。如果有,则说明免驱摄像头挂载成功,没有的话肯定是摄像头不支持了。
三、配置执行监控软件
mjpeg-streamer的用法比较简单,参数直接写在命令行里就可以了。下面给出几个常见的参数组合:
mjpg_streamer -i "input_uvc.so -d /dev/video0" -o "output_http.so -p 8080 -w /www/camwww"
上面这行命令是让mjpeg-streamer以默认的640×480分辨率、30fps显示图像,并且监听8080端口的http请求。其自带的一个小型web页面所在的地址为/www/camwww。
mjpg_streamer -i "input_uvc.so -f 15 -r 320*240 -d /dev/video0" -o "output_http.so -p 8080 -w /www/camwww"
上面这个就是较为完整的,自定义了分辨率和帧率。另外还有-c参数可以设置使用密码访问。具体参数可以加上–help来运行mjpeg-streamer查看,或者这个网站。
注意:如果你的摄像头必须像下面这样加上-y参数才能正常开启的话,就说明它不支持MJPEG输出,只能以YUV形式每秒2、3帧的速度输出:
mjpg_streamer -i "input_uvc.so -y -d /dev/video0" -o "output_http.so -p 8080 -w /www/camwww"
正常完成了mjpeg-streamer的执行后,就可以用浏览器(最好是firefox或者chrome)访问路由器的8080端口(由-p参数指定),(192.168.1.1:8080)查看摄像头的图像。
若想实现远程监控,可以在路由器上配置一下花生壳之类的动态域名服务,就能在外网通过域名访问路由器。
本文为悠然居(https://wordpress.youran.me/)的原创文章,转载请注明出处!
原文因为时间久远,现已被作者修改了一些内容。