硬件要求:imx6ull开发板、一款USB摄像头。

软件要求:ubuntu虚拟机、需要会搭建tftp和nfs环境、需要会buildroot编译根文件系统、需要会编译Linux内核。

在后台回复【摄像头】,我把整理的搭建环境的pdf放进去了,照着视频教程和pdf教程即可,不会的可以后台私聊博主。

说明:博主并没有使用下载emmc镜像的方式,而是使用 tftp 下载内核和设备树, nfs 网络挂载根文件系统。

 

调通了局域网的视频监控,效果如下:

 

实现框架:

手把手教你视频监控之 MJPG-Streamer 方案_监控

1、如何查看自己的摄像头支不支持UVC(USB video class)?

答案:在windows下设备管理器,点击摄像头,右键查看属性,会出现ID。或者在Linux下,插入USB摄像头,输入lsusb,可以看到ID。ID分为VID和PID,根据USB规范的规定,所有的USB设备都有供应商ID(VID)和产品识别码(PID),主机通过不同的VID和PID来区别不同的设备。

手把手教你视频监控之 MJPG-Streamer 方案_安全_02这里显示的是05a3:9230。

Linux2.6以后,已经将很多USB摄像头的UVC驱动写好了,具体支不支持这一款摄像头

手把手教你视频监控之 MJPG-Streamer 方案_安全_03

如果自己的摄像头ID在列表中,说明绝对支持,如果不在里面,也有可能支持,也有可能不支持,看情况,比如我的ID为05a3:9230,不在这个列表中,但是却支持,因为有一些芯片实际上驱动代码是相同的。如果自己新买一个,最好是买支持的,比如罗技C270,或者博主在淘宝买的这个:

手把手教你视频监控之 MJPG-Streamer 方案_监控_04

2、如何查看自己的摄像头正不正常

在windows下,很简单,打开PotPlayer或者其他电脑视频软件,选择打开摄像头,就可以看到图像:

手把手教你视频监控之 MJPG-Streamer 方案_安全_05手把手教你视频监控之 MJPG-Streamer 方案_视频监控_06

手把手教你视频监控之 MJPG-Streamer 方案_视频监控_07

在Linux下,有几个软件可以测试自己的摄像头:

1、webcam
2、spcaview
3、luvcview
4、guvcview
5、xawtv

spcaview是编译安装,剩下的sudo apt-get install ... 即可,博主亲测xawtv和guvcview是可以显示图像的,guvcview界面很友好,推荐。命令:guvcview /dev/videoX ,效果如图:

手把手教你视频监控之 MJPG-Streamer 方案_监控_08手把手教你视频监控之 MJPG-Streamer 方案_视频监控_09

3、如何打开Linux内核的UVC功能

在Linux内核源码目录下,输入make menuconfig,路径为Device Drivers/Multimedia support/Media USB Adapters/USB Video Class。另外一般也把Device Drivers/Multimedia support/V4L platform devices打开。

保存一下配置,然后编译。注意不要用正点原子原版编译脚本编译,他会采用deconfig,会把你的配置取消。

4、最后

编译完成后,会在arch/arm/boot产生新的zImage内核,在arch/arm/boot/dts产生新的设备树。

一开始教程中,我们已经在 buildroot 中打开了MJPG-Streamer,编译出根文件系统后,此时的根文件系统rootfs已经包含了MJPG-Streamer软件。

这时候按照韦东山老师的视频教程操作即可。

感性的解释下什么叫UVC:在windows下,一个USB摄像头插入电脑主机,会自动加载驱动程序,一般都没问题。在Linux下,如果Linux内核没有给你写好UVC驱动,你就要自己写摄像头驱动,我们知道USB协议是比较难的,更别说在此基础上加上视频传输,所以如果不是Linux内核集成了很多现成的UVC驱动,我们自己从零调试也是很难的。

UVC出现的原因:UVC的出现主要是为了统一日益增多的摄像头视频接口,一个USB接口非常方便。

手把手教你视频监控之 MJPG-Streamer 方案_安全_10