庄俊杰,孟利民
(浙江省通信网应用技术研究重点实验室,浙江杭州310023)
随着社会的快速发展和人们生活水平的不断提高,公众对安防的意识逐渐加深,社会对安防的需求也随之增长。作为安防产业的重要组成部分,视频监控产业得到了蓬勃发展,实时网络视频数据传输的实现已经成为业界极为关注的热点课题。通过设计具有实时性、完备性的视频传输系统来实现视频流的实时传输有着重要的理论意义和工程应用价值。使用H.264编码压缩技术[1],以及RTP实时传输协议[2],基于RFC3984和JRTPLIB库实现在网络视频监控系统中数据传输[3-5],本文重点介绍JRTPLIB在DM365开发板中的移植以及传输数据的过程,最后分3种网络状况测试。
在本项目设计中,采用支持H.264编解码的DM365开发板来进行二次开发。摄像头捕获的模拟视频信号首先由TVP5146芯片编码成为YUV格式的视频数据,后经过VPFE视频前端处理之后,然后再通过TMS320DM365的H.264编码器产生压缩后的H.264视频数据,以RTP协议通过Internet进行打包发送至服务器。在客户端,首先从服务器接收到RTP包中解析出H.264数据,送至H.264播放器实时播放出来。整个系统由视频设备、服务器和客户端3大块构成,设计方案如图1所示:
图1 系统方案设计图
本文RTP协议实现使用的是JRTPLIB库,一个实现了RTP/RTCP协议的开源库,通过它可以很方便地实现RTP或RTCP数据的收发库,本文使用jrtplib的版本为jrtplib-3.7.1,jthread版本为jthread-
1.2.1。本文中Jrtp数据接收方式:用jthread库提供的线程自动在后台执行对数据的接收,需要安装jthread 库,则需安装 jthread-1.2.1.tar.gz,而且 jthread -1.2.1 必须先与 jrtp-3.7.1 的安装,不然会出现找不到xxx.的错误和非法的引用等的编译或连接错误。因为在jrtp-3.7.1的configure中,会查找系统是否有编译了jthread库,如果有,那么编译的jrtp库则支持jthread。因此如果先编译jrtp再编译jthread,编译出来的jrtp库是不支持jthread的。
2.2.1 jthread 的编译安装
将源文件复制到工程文件夹下,这里指定/home/realtimedsp/study/RTP,执行解压个配置:
这里的prefix指定了安装的路径,host指定了目标环境,CC和CXX指定了montavista交叉编译器的路径。操作之后,将在当前目录下生成Makefile。
这样,jthread就安装完毕了,opt/jthread_jrtplib/目录下就生成了include和lib文件夹了,里面有Jthread的头文件和库文件了。
2.2.2 JRTPLIB 的安装
安装JRTPlib的方法和jthread相似,首先执行解压和配置:
这样,JRTPlib就安装好了,再看/opt/jthread_jrtplib文件夹下就有了jrtplib的头文件和库文件了。
2.2.3 基于JRTPLIB的RTP收发实现
JRTPLIB库基于C++实现,面向对象。JRTPLIB库各模块的功能通过各个类来实现,如数据的传输、接收存储管理、线程管理等等。开发过程中常用的类有:
RTPSession。该类实现了数据接收和发送相关的大部分函数。如会话创建函数Create,RTP分组发送函数Send-Packet以及游标定位函数GoToNextSourceWithData等。它内置的处理了RTCP部分,不需要额外的进行设计;RTPSessionParams。该类主要用来描述RTPSession实例将要使用的参数。相关的成员函数有:设置时间戳函数SetOwn-TimeStampUnit,设置RTP分组最大长度函数SetMaximumP-acketSize等;RTPUDPv4TransmissionParams。主要用于RTP发送端口设置,如函数 SetPortbase;RTCPPacket。RTCPPacket类是各种RTCP包的基类,其中两个子类 RTCPPacket和RTCPSRPacket分别用于统计RTCP发送报告和接收报告。JRTPLIB库的发送和接收流程如图2所示:
图2 JRTPLIB库的发送和接收流程
实验测试主要针对客户端,开发板,服务器之间不同的网络状况进行丢包测试。由于客户端所在测试的网络为联通的,开发板也在该网络内。根据服务器所在网络的不同进行多次测试的平均结果如表1所示。
表1 测试结果
局域网内D1格式图像数据测试效果对比,发送前设备SD卡上的视频数据如图3所示,客户端接收播放的视频数据如图4所示。
图3 SD卡视频图像
图4 客户端视频图像
通过数据说明JRTPLIB库可以在DM365芯片开发板里完成编译,并用来完成视频数据的传输。具体效果依照网络状况而定。
经过实际测试,JRTPLIB在DM365开发板中成功移植,并实现H.264视频数据的传输,该网络监控系统可以实际应用于有线网络中,并且具有较强的自适应性。今后的工作是保证视频的清晰和流畅,另外添加其他的一些功能,例如云台,告警等功能。
[1] ITU-T Rec.H.264/ISO/IEC11496-10,Advanced Video Coding[S].Final Committee Draft,Document JVT-E022,Sept 2002.
[2] 樊姗.基于RTP的H.264视频传输技术的研究[D].济南:山东大学,2008.
[3] Wenger S,Hannuksela M M,Stockhammer T,etal.RFC-3984 RTP Payload Format for H.264 Video[EB/OL].http://www.faqs.org/rfcs/rfc3984.html,2005 -03 -12.
[4] Liesenborgs J.JRTPLIB[EB/OL].http://research.edu.uhasselt.be/-jori/page/index.phpn2CS.Jrtplib,2006 - 06-12.
[5] 林冰.基于H.264的视频监控系统的设计和实现[D].北京:北京邮电大学,2006.