APP下载

基于H.264的无线视频监控系统设计与实现

2010-09-04杨伟伟胡黎玮孟利民胡海勇

关键词:分片解码数据包

杨伟伟,胡黎玮,孟利民,胡海勇

(1.浙江省光纤通信技术重点研究实验室,浙江杭州310023;2.浙江鸿程计算机系统有限公司,浙江杭州310023)

0 引 言

在美国、韩国和欧洲等国家和地区,由于3G网络的广泛商用化,无线视频监控发展已相当成熟;而在国内,3G网络正处于发展和壮大阶段,基于3G网络的无线监控正逐步替代以GPRS和CDMA1X为基础的无线监控[1]。GPRS和CDMA1X网络可实际提供的上行速率分别仅为25kbps和75kbps左右;而3G技术可在室内、室外和车载环境中分别支持2Mkbps、384kbps和144kbps的传输速率,可以更好地满足无线视频监控的应用要求。H.264编码压缩技术是ITU-T和ISO/IEC联合开发组共同开发的最新国际视频编码标准[2]。本文采用H.264视频压缩技术,设计和实现了基于3G网络的无线视频监控系统,该系统可用于实际的现场监控。

1 系统设计

在本项目设计中,采用支持H.264编解码的GM8180开发板来进行二次开发。摄像头捕获的模拟视频首先由GM8180的编码器产生H.264压缩数据,然后压缩后的数据采用实时传输协议打包(RTP)并通过3G网络发送到客户端(电脑)进行解码播放。3G网络模块采用中兴的MC8630模块来完成,该模块通过USB接口与GM8180开发板相连。在发送前,需先进行该模块的拨号上网工作。最后在接收端,对收到的RTP视频进行解码播放。整个系统的设计方案如图1所示:

图1 系统方案设计图

2 RTP流封装H.264数据

2.1 H.264和RTP格式

H.264具有以下优点:在相同的还原质量下平均减少50%的比特率,提高网络的使用率;能够提供连续、流畅的高质量图像;容错能力强、能够解决网络传输中丢包等错误;网络适应性强,可实现在不同网络上传输[3]。H.264的算法基本上可以分为两层:(1)视频编码层(VCL,Video Coding Layer),负责高效的视频内容表示,高编码效率主要靠该层来实现;(2)网络抽象层(NAL,Network Abstraction Layer),该层主要负责按照网络所要求的方式对数据包进行打包和传送。

实时传输协议RTP(Real time Transport Protoco1)是用于Internet上针对多媒体数据流的一种传输协议。RTP通常使用UDP来传送数据。每一个RTP数据包由包头和负载两个部分组成。相关头部包括版本号、标志位、序列号、时间戳、同步源等等(可参考文档RFC3550)。

2.2 RTP流封装H.264数据的传输

2.2.1 NAL的负载格式

在传输H.264数据时,因为H.264的结构分层,只需要考虑NAL包的传输。最新的RFC3984标准中提供了针对H.246媒体流的RTP负载格式。主要有3种类型的负载格式:单个NAL单元分组、片分组和聚合分组[4]。当NAL包过长时,为了防止丢掉整包,必须进行分片发送。当NAL包不是很大时,直接把整个NAL作为RTP的数据载荷发送。本项目采用单个NAL单元分组和片分组,不考虑聚合。

2.2.2 NAL数据的发送

每个RTP包的时间戳设置如下:若该NAL无需分片发送(长度小于阈值),则设置默认的时间戳增量为10;若该NAL需要分片发送(长度大于阈值),则该NAL的所有分片都设置为相同的时间戳:第一个分片包的时间戳增量为10,后面分片包增量为0。即属于同一NAL的所有分片采用相同时间戳。发送流程如图2所示:

图2 NAL数据发送流程图

2.2.3 NAL数据的接收

在接收端接收RTP包时,分3个层次来管理接收到得包。首先,根据RTP包的SSRC(源标识符号)来区分不同的视频源;其次,根据RTP包的时间戳来区分不同的NAL包,不同NAL包的时间戳增量为10;最后,如果是分片包,根据RTP包的序列号来区分同一NAL包中的不同分片。结构如图3所示:

图3 NAL数据接收缓存结构

该缓冲设计的优点:如上的缓存设计,可以自动纠正数据包的乱序(如果数据从不同网络路由传送,原本后面的数据包比前面的数据包先到达的可能性会很大),而且可以根据数据包的时间戳信息丢弃那些超时的数据包。最后,在播放的时候,不仅可以根据NAL管理队列中的数量来自动调节播放速率,而且还可以根据SSRC灵活选择视频源。

3 客户端软件播放设计

本系统播放器的实现采用DirectShow构架,由VS2005开发平台完成。DirectShow是微软公司在ActiveMovie和Video for Windows的基础上推出的新一代基于COM的流媒体处理的开发包,它给出了一种全新的多媒体数据处理模型,以filter(滤波器)为核心概念,封装了采集、压缩和解压缩等一系列算法[5]。DirectShow分如下3种filter,如图4所示:

(1)Source Filter:负责处理不同类型的数据源,将数据引入下一级filter;

(2)Transform Filter:负责从上级filter获取数据流进行变换,生成输出流。变换操作包括:编解码、格式转化、压缩解压缩等;

(3)Render Filter:处于Filter Graph的最后一级。负责接收上级数据流并把数据提交给外设。

图4 本项目采用的Directshow方案

本项目中,采用ffdshow插件提供的ffdshow Video Decoder来进行H.264的解码,而提交给外设播放的组建Render Filter由directshow自身提供的Video Renderer实现。网络RTP数据的接收封装于Source Filter中,该Source Filter基于“推数据”模型,当收到NAL数据包时,该模型中的FillBuffer()函数把NAL数据推下解码滤波器和渲染滤波器,以此实现H.264的数据播放。

4 结束语

经过实际测试,基于RTP协议的H.264视频的传输可以实际应用于CDMA2000无线网络中,而基于Directshow的播放器更是由于其结构清晰,设计过程模块化,可以高效率地实现数据接收和解码的独立优化。该项目的实现具有广泛的应用价值,不仅可以实现大型商场、公众场合的监控,还可应用于车载环境中。

[1]白立岗.基于3G网络和H.264标准的公交车无线视频监控系统研究[J].公路交通科技,2009,52(4):1-2.

[2]刘 玮.Visual C++视频/音频开发实用工程案例精选[M].北京:人民邮电出版社,2004:55-70.

[3]毕厚杰.新一代视频压缩编码标准[M].北京:人民邮电出版社,2001:10-40.

[4]樊姗.基于 R TP的H.264视频传输技术的研究[D].济南:山东大学,2008.

[5]陆其明.DirectShow开发指南[M].北京:清华大学出版社,2003:10-30.

猜你喜欢

分片解码数据包
上下分片與詞的時空佈局
《解码万吨站》
基于Jpcap的网络数据包的监听与分析
分片光滑边值问题的再生核方法
CDN存量MP4视频播放优化方法
解码eUCP2.0
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
基于模糊二分查找的帧分片算法设计与实现
SmartSniff