开发环境:
主机:ubuntu16.04
openwrt:openwrt19.07
1 摄像头选择做本次实验的时候,推荐大家用 usb 免驱的摄像头,最好是支持 mjpeg 输出的摄像头类型。usb 免驱摄像头输出 yuv 格式和输出 mjpeg 格式,对无线监控的效果有什么影响呢?
首先大家要知道,同样是一帧数据,yuv 格式会比 mjpeg 格式的大得多,因此我们在视频传输的时候,一般是传输 mjpeg 格式的数据。这样,就有这样一个问题,如果摄像头是输出 yuv 格式,那么就意味着我们需要通过软件将视频数据由 yuv 格式转换成 mjpeg格式,然后传输。如果摄像头输出的是 mjpeg 格式,那个将可以直接将得到的数据进行传输。因此,使用支持 mjpeg 压缩的摄像头,比一般的摄像头,做无线监控的效果,好很多!
2 配置 openwrt 支持 usb 摄像头要支持摄像头,就必须配置上摄像头的驱动,因为是免驱的 usb 摄像头,因此我们必须配置上 uvc 驱动,具体如图所示。首先,我们选中内核模块进行配置。
kernel modules --- > video support --- > kmod-video-core kmod-video-uvc -*- kmod-video-videobuf2编译。
$make v=99
将固件烧写到板子中,插入usb摄像头,接口查看是否有video0这个设备节点了。
3 配置 openwrt 支持 mipg-streamer 软件mipg-streamer 就是一款用于视频数据采集、视频数据格式转换、视频数据传输的软件,服务器。因此为了让 openwrt 系统支持该软件,我们需要将它配置进去。
multimedia --- > mjpg-streamer就这样,我们就让 openwrt 系统支持无线监控,按前面的方法配置好后,保存退出,然后 make v=99,最后将编译出来的固件烧写到我们的开发板上面。然后启动系统。启动完成,插入我们的摄像头,就会看到/dev/video0 这个设备节点。usb 摄像头接入开发板后提示如下:
如果插上提示不对,请先做上一章,再重新生成固件即可。然后运行 mipg-streamer 软件:
一般摄像头:#mjpg_streamer -i input_uvc.so -d /dev/video0 -y -o output_http.so -w www
支持 mjpeg 的摄像头:#mjpg_streamer -i input_uvc.so -d /dev/video0 -o output_http.so -w www
其中: -i 表示指定输入,这里输入为:input_uvc.so 即 uvc(usb video),-d 是设备位置,我们摄像头的设备位置在:/dev/video0,-y 用于区分一般摄像头和支持 mjpeg 的摄像头,-o 指定输出,这里输出到 output_ http.so 即 http(可以理解为输出到网页上),-w指定 web 服务器为 www。运行命令后,可以得到如下图的信息:
#mjpg_streamer -i input_uvc.so -d /dev/video0 -o output_http.so
好的,电脑上必须用火狐浏览器才能看到时视频哦,我们打开网页输入:
http://192.168.2.1:8080/?action=stream
其中 192.168.2.1 是开发板的 ip 地址,8080 是 http tcp 的端口,action表示某个动作,这里表示: stream。通过这个输入我们就可以从网页完成视频的监控了!
当然,在我们的 ” monitor.apk” 中可以进行手机安装该软件,进行安卓手机端的控制!手机上只用输入路由器的 ip 即可看到监控画面。这里 mipg-streamer 软件使用方法我们可以通过命令:mjpg_streamer -h 进行帮助!
root@openwrt:~# mjpg_streamer -h-----------------------------------------------------------------------usage: mjpg_streamer -i | --input [parameters] -o | --output [parameters] [-h | --help ]........: display this help [-v | --version ].....: display version information [-b | --background]...: fork to the background, daemon mode-----------------------------------------------------------------------example #1: to open an uvc webcam /dev/video1 and stream it via http: mjpg_streamer -i input_uvc.so -d /dev/video1 -o output_http.so-----------------------------------------------------------------------example #2: to open an uvc webcam and stream via http port 8090: mjpg_streamer -i input_uvc.so -o output_http.so -p 8090-----------------------------------------------------------------------example #3: to get help for a certain input plugin: mjpg_streamer -i input_uvc.so --help-----------------------------------------------------------------------in case the modules (=plugins) can not be found: * set the default search path for the modules with: export ld_library_path=/path/to/plugins, * or put the plugins into the /lib/ or /usr/lib folder, * or instead of just providing the plugin file name, use a complete path and filename: mjpg_streamer -i /path/to/modules/input_uvc.so-----------------------------------------------------------------------【注1】输入参数
-y 是关键,默认启动是 mjpeg 格式,这个就报错。改成 yuv 格式
-d 指定设备
-f 制定帧数,默认 30 帧
-r 指定视频大小,如 320×240
-q 指定画质,默认 80
【注2】输出参数
-p 指定端口,这里是 8080
-w 指定网页目录,这里我们设置的是/www/camwww 目录
-c 设置通过密码访问
【注3】修改分辨率
#mjpg_streamer -i input_uvc.so -r 800*600 -d /dev/video0 -o output_http.so 8080 -w www
提示:未做出实验效果时可以用我提供的固件先测试一下。
【注4】服务操作
/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,在通常*nuix是这样的,但是openwrt的busybox是精简版的,所以变成了直接调用服务启动
用于CDMA蜂窝频段、具有PIN二极管开关的MAX2266功率放大器
超声波传感器在粮仓料位中的检测方案
结合代码实例带你上手python数据挖掘和机器学习技术
关于车窗系统的硬件开发方案
iPhone11系列通过第三方机构换屏将收到系统弹窗警告
Openwrt开发指南 第25章 配置OpenWrt支持网络摄像头
芯片半导体人的元器件基础知识
功耗测评 | 温湿度传感器GXHT3X (国产IC)
无人机表演成为民用无人机规模增长的关键动力之一
电源模块选型需考虑哪些问题
国产数据库突围:道阻且长,行则将至
海尔中央空调又有新动作,签约胶州将再造一个“灯塔工厂”
购买对讲机需要办理哪些手续?
Marvell连续16年引领光纤通道市场 并将继续保持领先
普华基础软件顺利通过ISO20000和ISO27001双体系国际认证
变频器在陶瓷窑炉风机的应用
宝马逐步扩大新能源汽车市场优势 并其拉大领先优势
TC3678/TC368S系列对讲机维修实例
区块链在零售银行中的战略及价值
浅谈pcb钻孔到走线的偏差