基于H.264编码的视频发送/接收系统的设计*
2013-06-28雷惊鹏
雷惊鹏
(1.合肥工业大学计算机与信息学院,安徽合肥23000;2.安徽国防科技职业学院信息工程系,安徽六安237011)
视频泛指将一系列静态影像以电信号方式加以捕捉、纪录、处理、储存、传送与重现的各种技术.不断发展的网络技术和网络带宽的快速增长,使视频业务应用得以普及.
视频信息由于其直观性,容易被人的视觉接受.由于其包含的信息量极大,因此需要有良好的带宽支持.在诸多形式的多媒体应用中,低延迟是传输的基本要求,用户对视频信息的延迟和对延迟的变化相对比较敏感.但是在传输中偶尔因为数据帧丢失导致画面出现短暂停顿、流畅性欠佳等情况,则允许控制在一定的范围.对视频捕捉设备采集到的信号需要经过变换、量化等一系列操作后进行编码,例如预测编码、变换编码、统计编码,即三大经典编码方法[1].
1 H.264编码
国际标准化组织(ISO)和国际电信联盟(ITU-T)等标准化组织制定了一系列关于视频编码的标准.H.264编码标准又称作AVC(Advanced Video Coding)标准,也被称作ITU-T H.264建议和MPEG-4的第10部分的标准[2].
相对于其他现有的视频编码标准,H.264希望在相同带宽下提供更好的视频质量.H.264将视频编解码的流程分成5个模块:帧内预测和帧间预测、变换和反变换、量化和反量化、环路滤波、熵编码.在视频通信、存储领域,H.264视频编码标准都得到了广泛应用,例如,视频电视电话会议、远程教育等.H.264编码算法划分为VCL和NAL两个逻辑层.相对于H.263+算法,H.264采用了更加灵活的VCL算法,核心压缩引擎、宏块、片等使用了新的编码语法,编码效率得到有效提高.H.264标准在VCL和NAL之间定义的接口采用分组方式,完成两个层次间的系统层分割,使得VCL和NAL可以独立完成各自的任务.
H.264视频编码标准也在不断地修订和完善,目前对它的理论研究主要集中在分析其算法结构和视频信号延时,以有效提高视频压缩效率.编码时帧间预测的运动估计和模式选择耗费了大量的时间[3],对视频压缩编码的效率有很大影响,而类似运动估计、快速模式算法等固定算法的形成,加深了对该运动估计和模式的研究,有效提高了视频压缩的能力和视频信息的实时稳定性.在极低码率(32-128Kbps)的情况下,H.264与MPEG-4相比具有性能倍增效应,即:相同码率的H.26L媒体流和MPEG-4媒体流相比,H.26L拥有大约3个分贝的增益(画质水平倍增).32Kbps的H.26L媒体流,其信躁比与128K的MPEG-4媒体流相近.即在同样的画面质量下,H.264的码率仅仅为 MPEG-4的四分之一[4].
本文借助开源代码实现了基于H.264编码的网络视频发送和接收系统,客户端接收并对数据解码后进行播放.在视频实时传输业务中可以采用.
2 基于H.264编码的视频发送/接收系统
2.1 系统框架
本文提出的视频发送/接收系统的总体框架如图1所示:
图1 基于H.264编码的C/S架构视频发送/接收系统
(1)视频采集设备作为信息来源,负责视频信号的接收和预处理;
(2)服务器端利用编码函数encode(),完成以下主要工作:
1)初始化编码器参数;
2)为待编码帧分配内存空间;
3)循环完成帧层次编码.
(3)客户端利用解码函数完成数据解码,并进行播放.
2.2 关键过程
服务器端需要对H.264视频流进行RTP打包,经过封装后,形成适合网络传输格式的数据包.
(1)编码器选用开源的T264编码器,主要由六部分组成:帧内预测、帧间预测、DCT变换和量化、Zigzag扫描、环路滤波、熵编码[5].
(2)T264_encode()编码函数调用eg_init()函数对视频码流进行指针初始化,调用decision_slice_type函数()判断当前的帧类型,根据确定的类型调用相关函数初始化NAL[6]单元头信息,最后再通过T264_encode_frame()函数进行编码,并将编码后的数据写入NAL单元结构中.设计传输使用的RTP数据头如下:
编码函数T264_encode()主要完成编码器参数初始化及T264结构体的初始化,并为待编码的原始图像帧分配内存空间.
(3)编码Filter的基类选择CTransformFilter,以适应不同类型的传输媒体.该类的实现中,通过CheckInputType函数完成对媒体类型的检查.Filter经编译后生成T264Encoder.ax文件,对该文件注册后即可作为独立的COM组件.
(4)在服务器和客户端可加入缓存机制,实现对视频抖动的控制.
3 结语
通过修改开源的T264编解码器能实现基于H.264编码视频的采集与播放,对信息传输的质量控制是需要在此基础上进一步改进的工作.设置基于终端的QoS解决策略有助于视频传输质量的改进和控制,通过在终端增加速率控制、误码控制等QoS机制,在网络相对稳定的条件下能够做到一定的QoS保证,从而提高图像的质量.
[1]蔡安妮,孙景鳌.多媒体通信技术基础[M].北京:电子工业出版社,2004.
[2]毕厚杰.新一代视频压缩编码标准——H.264/AVC[M].北京:人民邮电出版社,2005.
[3]梁睿.H.264帧间预测模式选择和快速运动估计优化算法[EB/OL].http://www.paper.edu.cn/releasepaper/content/200701 -151,2007 -01 -12.
[4]吴峰,贝悦,李辉.H.264 编码新技术展望[J].软件,2011,(11):73-75.
[5]谭超,王库,傅颖.基于DM642的X264开源代码实现的研究[J].微计算机信息,2007,(35):181 -183.
[6]孔群娥,曾学文,刘马飞.基于x264实现H.264的时域可伸缩编码[J].微计算机应用,2011,(3):24 -28.