在OpenWrt上挂载USB摄像头并组建监控系统是一项实用的技术,尤其对于那些希望利用旧路由器进行家庭或小型办公室安全监控的用户来说。OpenWrt是一个轻量级的开源嵌入式操作系统,常用于路由器设备,它提供了丰富的自定义功能和扩展性。下面将详细介绍如何在OpenWrt上实现这一目标。
1. **安装必要的软件包**
确保你的OpenWrt系统已经更新到最新版本,并安装了以下基础软件包:
- `kmod-usb-core`: USB核心模块,用于识别USB设备。
- `kmod-usb-uhci` 或 `kmod-usb3`: 根据你的路由器硬件支持的USB控制器来选择,这使得路由器可以支持USB设备。
- `mjpg-streamer`: 一个轻量级的视频流服务器,能将摄像头的MJPEG流推送到网络上。
2. **挂载USB摄像头**
插入USB摄像头到你的OpenWrt路由器上。运行`lsusb`命令检查新插入的设备,找到摄像头对应的ID。然后,根据设备ID,使用`uci add udev rule`添加udev规则,赋予摄像头正确的权限,例如:
```
uci add udev rule
uci set udev.@rule[-1].idVendor='046d'
uci set udev.@rule[-1].idProduct='0825'
uci commit udev
/etc/init.d/udev restart
```
3. **配置mjpg-streamer**
下载并编译`mjpg-streamer`源代码,或者直接从OpenWrt的软件包仓库安装预编译版本。配置mjpg-streamer的输入插件(如`input_uvc.so`)来读取摄像头数据,以及输出插件(如`output_http.so`)来通过HTTP协议发布视频流。示例配置如下:
```
mjpg_streamer -i "input_uvc.so -f 20 -q 70" -o "output_http.so -w /www -p 8080"
```
这将启动一个在端口8080上的视频流服务,每秒20帧,质量70。
4. **设置网络访问**
确保路由器的网络设置允许外部访问8080端口。你可以通过配置NAT端口转发,或者如果路由器直接连接到互联网,可以开启相应的端口。
5. **查看监控画面**
在任何网络设备上,如电脑、手机,通过浏览器访问`http://your-router-ip:8080`,就可以看到实时监控画面了。
6. **自动化与持久化**
为了使摄像头服务开机自动启动并保持运行,你需要将mjpg-streamer的启动命令添加到系统的启动脚本中,例如`/etc/rc.local`。
7. **额外功能**
- **存储录像**: 可以结合`motion`软件进行运动检测,并在检测到活动时录制视频到SD卡或网络存储。
- **多用户访问**: 配置HTTP认证以限制访问权限,或者使用其他安全措施。
- **远程控制**: 使用如`ffmpeg`之类的工具,可以实现远程控制摄像头的视角、焦距等。
以上步骤完成后,你就拥有了一个简单的基于OpenWrt的监控系统。然而,实际操作中可能需要根据你的硬件环境和需求进行调整。记住,安全是首要考虑的,确保你的网络和数据传输都是安全的。