Linux项目:《视频监控》基于正点原子I.MX6ULL_MINI板

Posted 是OSS不是SOS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux项目:《视频监控》基于正点原子I.MX6ULL_MINI板相关的知识,希望对你有一定的参考价值。

前言:本项目更改自韦东山老师的视频监控项目,如果想深入了解该项目,建议去看韦老师的视频。本人只是将其适配成正点原子的Linux板子,如有侵权,请务必告知。必删!谢谢!

PC端与手机端通过局域网在线播放视频监控画面,效果如下:

硬件连接示意图:

在手机或电脑有联网的前提下,随时随地远程监控。但由于imx6ull性能局限为了有较好的演示效果,建议在板子先运行摄影一段视频程序,再将视频推流到nginx流媒体服务器,然后手机从服务器上拉流下来通过VLC播放。监控画面如下:

注意:本文所有方案需建立在有网络的前提下,即需要WIFI模块,本人使用正点原子旗下的SDIO WIFI模块(8189)本人也根据原子的教程配置好相关的驱动,并就本项目需要,编写了建立网络连接的脚本。默认使用本人的路由。操作者在操作时应改为自己路由或热点的WiFi名称与密码。更改方法请参考正点原子WiFi驱动移植教程。

视频监控方案选择

视频里介绍两种方案。
方案一:利用mjpg-streamer实现局域网内的视频监控。

设计思路在连接摄像头的ARM板子上,实现一个服务器程序:它一边读取摄像头数据,一边等待客户端连接并发送数据。在手机或电脑上,编写客户端程序,它会从ARM板上获得数据并显示出来。前提:约定数据格式传输一帧帧的数据
现成程序利用mjpg-streamer软件,将它运行在ARM板上,在手机上使用浏览器直接观看视频
方案的优缺点优点:程序简单,所有源码一目了然,便于学习对ARM板的性能要求不高,主频200MHz的ARM芯片也能实现。缺点:只能实现局域网内的视频监控要实现互联网视频监控,需要另外实现内网穿透mjpg-streamer没有实现声音传输mjpg-streamer项目已经不再维护,仅仅建议用于学习。

以正点原子驱动视频教学里的内核(4.15),设备树等为基础,根文件系统可选用第三期视频用busybox制作好的。在Ubuntu上对mjpg-streamer进行交叉编译。即配置、编译、安装三部曲后再将相关的库文件放到单板的lib文件夹下。最后在单板上运行mjpg-streamer,在电脑或手机浏览器输入http://路由器给开发板分配的IP地址:8080/?action=stream
即可观看。也可选用buildboot制作的根文件系统(推荐使用这个)这个根文件系统比较完善,可降低执行命令出错的几率。先按照原子里的buildroot教程制作根文件系统,再根据韦老师的视频生成含有mjpg-streamer软件的根文件系统。

方案二:热门的流媒体方案,利用ffmpeg软件将摄像头拍到的画面推流到Nginx流媒体服务器。推流命令在附录。PC端通过花生壳类软件进行内网穿透(把开发板暴露在公网上)。最后通过VLC打开网络串流输入以下URL即可从Nginx流媒体服务器上获取到监控的画面。访问地址如下图:

URL:访问地址/test?app=live&stream=wei

注意 由于IMX6ULL性能太弱,在VLC播放器里看到的视频很卡,很滞后

由于mini板没有声卡,对于视频里有关使用ffmpeg录制音频的步骤本人并无操作过,如果您手上的板子是阿尔法板可以把音频也录进去看一下效果。

附:
在开发板上安装好ffmpeg后:
执行命令: ffmpeg -f v4l2 -framerate 10 -i /dev/video1 -q 10 my.mp4
它会把摄像头的数据录制为my.mp4
把my.mp4复制到PC机,播放

推流
在开发板上执行:
ffmpeg -f v4l2 -framerate 10 -i /dev/video1 -q 10 -f flv rtmp://127.0.0.1/live/wei
拉流
192.168.1.6为PPT里的开发板IP,操作时应换成自己的开发板IP
在PC上安装VLC播放器:https://www.videolan.org/
使用RTMP协议拉流:VLC播放器中点击“媒体”->“打开网络串流”,输入:rtmp://192.168.1.6/live/wei ,就可以播放了
使用HTTPFLV协议拉流:VLC播放器中点击“媒体”->“打开网络串流”,输入: http://192.168.1.6/test?app=live&stream=wei ,就可以播放了
缺点:
IMX6ULL性能太弱,在VLC播放器里看到的视频很卡,很滞后
改进:
我们可以上传一个mp4文件到开发板,把它推到Nginx: ffmpeg -re -i test.mp4 -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/wei
然后再用VLC拉流看看,会发现很顺畅

总结:项目不难,细节居多,命令里的IP地址一定要根据自己的开发板IP设置。ffmpeg是音视频方向的入门,有兴趣的小伙伴可以认真查阅这方面的相关资料!本文是本人做完该项目半年后整理所得,难免出现纰漏,若发现,请务必告知!谢谢!最后附上我整理好的视频监控资料压缩包!

以上是关于Linux项目:《视频监控》基于正点原子I.MX6ULL_MINI板的主要内容,如果未能解决你的问题,请参考以下文章

正点原子I.MX6U-MINI驱动篇4Linux设备树详解

正点原子I.MX6U-MINI应用篇9嵌入式Linux中的多线程编程pthread

正点原子I.MX6U-MINIu-boot过程移植详解

正点原子I.MX6U-MINI移植篇kernel移植过程详解

正点原子I.MX6U-MINI应用篇8嵌入式Linux网络通信socket编程

正点原子I.MX6U-MINI移植篇u-boot移植过程详解