远程监控系统项目总结


       想要做一个牛叉的视频监控系统,结果不尽人意,但不是总结一下吧!先体验了一把这个项目: 网眼v2000+V4L(2.6.29)+T264+UDP+LinuxClient

       可是mini2440上现在用的内核是2.6.32版本的,为了体验一把,内核,bootloader,交叉工具链统统换掉,才得以体验。体验之后就立刻想把这个项目升级一下。最终定为: 任意V4L2摄像头+V4L2(2.6.32)+H264(X264)+RTP(ORTP)+Client(VLC)。这个也不是当时一下子想起来的,一步步逼近,再得以此结果。选V4L2是因为趋势,先X264是因为T264早以不再更新维护,选RTP是因为UDP传输不专业且客户端要自己写,选ORTP是因为JRTPLIB是C++写的,ORTP是C写的,选VLC(Client)只是一个工具,平常看视频用它,就选了它,只要支持RTP流,就可以。

       到写此总结为止能做到的从左到右是到了x264了,从右到左是到了vlc了。具体说来是V4L2采集,X264压缩是可以了。VLC播放RTP流也体验了。中间的RTP(ORTP库)是卡壳了。这样说来做的东西并不多,按照流程图上是不多,但是还有流程图以外的东西。为了学习整个监控系统的整个流程学习编译的《 基于v4l2的webcam应用, 本地预监(编译过程)》和ARM版本的《 基于v4l2 ffmpeg x264的视频远程监控(附上编译好的库文件)》,中间接触了FFMPEG,就深深的被它给吸引了,研究它的使用就花费了5天时间,也留下的这么一点点东西《ffmpeg在嵌入式中的使用》。

       V4L2的攻破是参考官方的例子 capture.c,用eclipse反复调试10遍后,使我达到的恶心地步,不过我也深深的记住了整个工作流程。

       X264编码是基于网友 羽龍飛《 V4L2视频采集与H.264编码源码大放送:Linux视频采集与编码(三)》里边的源码分析学习的,不过它这要锁定x264库的版本为20120101的,高一步的会出现彩色空间的错误面不进行编码。

      RTP实时流的学习是直接练习ortp中的例子,rtpsend留下的这个《  ortp中的rtpsend发送vlc播放》。也只留下的这个。实时流要难倒我的时候也想回头用普通的UDP传输,但是V4L2采集试了7个摄像头都是640x480大小的,这样用X264压出来的有每桢有0--3096大小,这样传输起来就有点不安全,容易丢包。后来经过测试确实如此。不过在压缩前可以进行拉伸用ffmpeg里边的函数,但我没有去深入了。

       VLC体验流的魅力是这篇文章《 用vlc搭建简单流媒体服务器(UDP和TCP方式)》介绍的,也感觉到了。

       说了一堆,在这个项目之前的前两件事一帆风顺,这次实现给了我一记耳光。

       参考文档:编译x264-《 arm mini2440 基于v4l2 ffmpeg x264的视频远程监控》

你可能感兴趣的:(h264,RTP,v4l2)