优化H.264编码及其在窄带实时视频系统中的应用
2017-10-21胡岸林张鑫石燕志
胡岸林+张鑫+石燕志
摘要:H.264编码标准在如今视频编码中广泛应用,其相较于先前的编码拥有自身明显的优势,而H.264编码的编解码流程则相对复杂。该文介绍了H.264编码的特点及编解码的实现,并讲解了优化的H.264编码在窄带实时视频系统中的应用,最后提到了H 264编码急需解决的问题。
关键词:H.264;视频编码;窄带;实时视频系统;应用
1概述
H.264标准是ITU-T的VCEG和ISO/IEC的MPEG联合开发的一种高效的视频编码压缩标准。H.264采用了先进的运动估计和运动补偿技术、帧内预测、改变编码组成、将编码过程中按熵原理不丢失任何信息的编码进行统一等新型的技术。通过H.264与H.263+或MPEG-2的比较可以发现:通常情况下,H.264提供的视频质量较高,并且在节省码率方面有着较高的优势。
2H.264与之前标准的异同点
H.264标准的推出是视频编码标准的一次重要的进步,但是通过进行技术方面的比较发现,H.264仍然没有完全推翻以往的结构组成和框架组成,并且在结构和整体的框架方面,H.264与H.263的编码存在诸多相似的地方。下面对它们之间的相似之处进行进一步的说明:1)都是对图像进行分块处理,将其划分为不同的像素块,为后期提供结构基础;2)结合图像空间中存在的冗余现象,对原来的一些模块进行改变、量化,或者增加原始编码的长度;3)由于连续的画面之间往往存在一定的连续性,因此可以利用这一特性,借助运动估计和运动补偿方式,对发生改变的联系画面进行重新编码。针对所有的模块,首先都需要对不同帧画面的运动矢量进行搜索,其次借助编码器和解码器实现对其运行块的预测目的;4)在对残留块进行编码时,可以借助帧间的各种空间冗余进行编码;5)在标准方面,由于H.264对数据进行扫描的方式与以往的方式基本相同,其依据就是变换后矩阵高频系数基本为0,其参数具有集中在低频阶段的特点,并且在进行扫描的时候,是采用“之”字行进行的。
通过以上相似之处的分析可以发现,这些相同点能够在一定程度上为开发和拓展H.264提供有利条件,并且在兼容性和可移植性方面具有较高的优势。
通过与以往标准的比较,可以发现H.264在视频编码系统方面有了很大的提升,其改变内容主要包含以下几个方面:1)在增强运动估计方面采取了改变块大小的方式,该方式同样适用于增加变换的压缩效果;2)进行整数变换;3)强化熵编码。
借助H.264,通过改进信源编码系统,可以在一定程度上提高系统的运行效率,改善系统的整体性能,这种优势主要表现在传码率和图像质量上,下面分别对这两方面内容进行分析:1)传码率更低:在将H.264与MPEG和H.263+的运行系列标准进行比较之后发现,在编码器的传码率上,H.264能够在同样程度的最优化编码器码率的基础上降低50%;2)图像的质量更高:在设定码率相同的条件下,可以发现H.264提供的图像质量更高,并且图像的质量标准也相对较高。
3H.264的编解码实现概述
在H.264标准中,仅对编码后视频H.264并没有明确规定一个编解码器如何实现,只是对一个编码后视频比特流的句法和解码方式进行了说明,并没有对编码器、解码器的实现过程进行规定,在这个方面,MPEG与H.264存在相似之处,在实现H.264编码和解码的流程方面没有较大的差别,其主要的区别表现在功能块的细节方面。其细节方面的区别主要表现为对编解码实现过程的压缩性能有了较大的改善,并且在复杂程度方面也有了一定的改善。
在H.264标准中,采用的变换方法仍然是变换和预测的方式,借助这种混合的方式实现编码器编解码过程。图1为编码器以宏块为单位对输入的帧或场F'n进行处理的过程。其流程大致可以概括如下:在进行处理的时候,按照帧内或者帧间预测编码的方法进行,如果采用的方法是帧间预测编码,设定PRED为预测值,可以发现,当前片中已经经过编码的图像运动补偿(MC)确定后就可以得到该预测值。在当前模块和预测值之间会存在一定的差值,该差值可以视为是预测值PRED和当前块相减后的残差块,记为D'n,经过块转换和量化之后,会出现一组转换系数,记为x,借助熵编码,经过压缩之后就会形成码流,最终借助网络自适应层进行传输和储存。
在图2中,经过熵编码,可以使编码器输出的H.264比特流显示出一组变换系数,视为x,同样经过反变换和反量化过程可以得到残差D'n。解码器就会借助从该比特流中解码出的头信息生成一个与源码器初期PRED相同的预测块。此时,残差值Dn与解码器生成的PRED之和就是uFn,最终经过滤波后就会得到解码器的输出图像F'n。
4优化的H.264在窄带视频传输系统中的应用
采集卡收集到相关的视频之后,借助固化在片内的相关程序,实现对视频帧的H.264编码过程,完成编码之后,就可以利用回调函数将其传输给应用程序。在传输过程中,需要将视频数据进行分块处理,即将数据内容分化成不同的数据包,其大小为1k,将这些数据包封装之后以组播的形式进行传送。与此同时,在对视频数据资料进行传送的过程中,需要在传输线程中检查是否已经有被编码的数据存在于缓冲区中。如果其中已经存在数据,就需要借助sendto功能查看是否存在空,如果存在,则应该立刻借助sendto对数据进行发送,确保发出及时,避免出现没有发出而要等待下一个循环的问题。在运行原理方面,接收视频数据线程的工作原理与上述原理相同-,。
经过编码器编码后的视频图像,在数据结构方面会出现一定程度的差异性,会出现重要性数据和非重要性数据的差别,其中常见的重要性数据包含I帧、运动矢量和图像编码后的码流结构数据等;非重要的数据包含p帧、B帧数据等。由于重要数据对图像的重新组建起到关键性的作用,要确保这些重要的数据不会丢失,如果在传输的过程中出现重要数据丢失的现象,就会严重影响重建的图像质量,给P帧或B帧的图像的重新构建造成负面影响,并且在视觉上较难察觉出来。
本文提出的“有选择重传方法”作用于应用层,有助于改善因為信道质量造成的随机性较差的问题,该方法的最终目标就是确保重要数据传输的准确性和可靠性,对非重要数据的传输问题则不予重视。“有选择重传方法”的运行理论如下图3,其基本流程可以概括如下:1)对即将进行发送的数据进行分类,将其分为重要数据和非重要数据两种,对这两种数据分别进行标记,之后将经过数据封装和RTP格式处理的数据传送至3GPP2网络丢包仿真器,此时应该注意要在数据传输起始端对重要的数据包进行缓存;2)数据接收端在收到传输数据之后,首先应该对数据进行缓存,之后再结合数据包丢失的具体情况对其进行重新判决。该判决方法可以概括如下:对丢失数据包的重传域进行设定,查找并确定数据传送过程中丢失的数据包数量和类型,如果在检查过程中发现有几个数据包是连续丢失的,此时就应该首先检查丢失的数据包是否符合重传阈值的要求,如果超过了阈值限制,就需要借助RTCP进行重新传送,如果不对丢失的数据进行重新传送,就会在一定程度上影响数据传输的质量。如果采用的传输方式是UDP方式,并结合TCP/IP重传机制,在数据流量使用方面会极少的增加反馈流量的数量,避免出现图像因数据包丢失而影响图像质量的问题,在一定程度上提高了视频图像的质量。
5结束语
尽管在视频压缩效率方面,H.264具有明显的优势,但是由于其运算的过程较为复杂,影响了其在实际中的应用。因此,针对这一现象,加强对实时快速运输算法和降低运算复杂性的研究尤为重要。endprint