H.264整理2


***【在线视频教程】***

好文章,来自【福优学苑@音视频+流媒体】

H264编码基本


    H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。这个标准通常被称之为H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC)而明确的说明它两方面的开发者。


    H264标准各主要部分有Access Unit delimiter(访问单元分割符),SEI(附加增强信息),primary coded picture(基本图像编码),Redundant Coded Picture(冗余图像编码)。还有Instantaneous Decoding Refresh(IDR,即时解码刷新)、Hypothetical Reference Decoder(HRD,假想参考解码)、Hypothetical Stream Scheduler(HSS,假想码流调度器)。


背景

    H.264是国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式。H.264是ITU-T以H.26x系列为名称命名的视频编解码技术标准之一。H.264是ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像编码专家组)的联合视频组(JVT:joint video team)开发的一个数字视频编码标准。该标准最早来自于ITU-T的称之为H.26L的项目的开发。H.26L这个名称虽然不太常见,但是一直被使用着。H.264是ITU-T以H.26x系列为名称命名的标准之一,AVC是ISO/IEC MPEG一方的称呼。


    国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-4等。而H.264则是由两个组织联合组建的联合视频组(JVT)共同制定的新数字视频编码标准,所以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高级视频编码(Advanced Video Coding,AVC)的第10 部分。因此,不论是MPEG-4 AVC、MPEG-4 Part 10,还是ISO/IEC 14496-10,都是指H.264。


H.264是在MPEG-4技术的基础之上建立起来的,其编解码流程主要包括5个部分:


  • 帧间和帧内预测(Estimation)

  • 变换(Transform)和反变换

  • 量化(Quantization)和反量化

  • 环路滤波(Loop Filter)

  • 熵编码(Entropy Coding)

    H.264标准的主要目标是:与其它现有的视频编码标准相比,在相同的带宽下提供更加优秀的图象质量。通过该标准,在同等图象质量下的压缩效率比以前的标准(MPEG2)提高了2倍左右。


    H.264可以提供11个等级、7个类别的子协议格式(算法),其中等级定义是对外部环境进行限定,例如带宽需求、内存需求、网络性能等等。等级越高,带宽要求就越高,视频质量也越高。类别定义则是针对特定应用,定义编码器所使用的特性子集,并规范不同应用环境中的编码器复杂程度。


优势

低码率(Low Bit Rate)

和MPEG2和MPEG4 ASP等压缩技术相比,在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG2的1/8,MPEG4的1/3。

高质量的图像

H.264能提供连续、流畅的高质量图像(DVD质量)。

容错能力强

H.264提供了解决在不稳定网络环境下容易发生的丢包等错误的必要工具

网络适应性强

    H.264提供了网络抽象层(Network Abstraction Layer),使得H.264的文件能容易地在不同网络上传输(例如互联网,CDMA,GPRS,WCDMA,CDMA2000等)。

H.264最大的优势是具有很高的数据压缩比率,在同等图像质量的条件下,H.264的压缩比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。举个例子,原始文件的大小如果为88GB,采用MPEG-2压缩标准压缩后变成3.5GB,压缩比为25∶1,而采用H.264压缩标准压缩后变为879MB,从88GB到879MB,H.264的压缩比达到惊人的102∶1。低码率(Low Bit Rate)对H.264的高的压缩比起到了重要的作用,和MPEG-2和MPEG-4 ASP等压缩技术相比,H.264压缩技术将大大节省用户的下载时间和数据流量收费。尤其值得一提的是,H.264在具有高压缩比的同时还拥有高质量流畅的图像,正因为如此,经过H.264压缩的视频数据,在网络传输过程中所需要的带宽更少,也更加经济。


特点

H264标准的主要特点如下:


更高的编码效率

同H.263等标准的特率效率相比,能够平均节省大于50%的码率。

高质量的视频画面

H.264能够在低码率情况下提供高质量的视频图像,在较低带宽上提供高质量的图像传输是H.264的应用亮点。

提高网络适应能力

H.264可以工作在实时通信应用(如视频会议)低延时模式下,也可以工作在没有延时的视频存储或视频流服务器中。

采用混合编码结构

    同H.263相同,H.264也使用采用DCT变换编码加DPCM的差分编码的混合编码结构,还增加了如多模式运动估计、帧内预测、多帧预测、基于内容的变长编码、4x4二维整数变换等新的编码方式,提高了编码效率。

H.264的编码选项较少

在H.263中编码时往往需要设置相当多选项,增加了编码的难度,而H.264做到了力求简洁的“回归基本”,降低了编码时复杂度。

H.264可以应用在不同场合

H.264可以根据不同的环境使用不同的传输和播放速率,并且提供了丰富的错误处理工具,可以很好的控制或消除丢包和误码。

错误恢复功能

H.264提供了解决网络传输包丢失的问题的工具,适用于在高误码率传输的无线网络中传输视频数据。

较高的复杂度

264性能的改进是以增加复杂性为代价而获得的。据估计,H.264编码的计算复杂度大约相当于H.263的3倍,解码复杂度大约相当于H.263的2倍。

技术

    H.264和以前的标准一样,也是DPCM加变换编码的混合编码模式。但它采用“回归基本”的简洁设计,不用众多的选项,获得比H.263++好得多的压缩性能;加强了对各种信道的适应能力,采用“网络友好”的结构和语法,有利于对误码和丢包的处理;应用目标范围较宽,以满足不同速率、不同解析度以及不同传输(存储)场合的需求。


    技术上,它集中了以往标准的优点,并吸收了标准制定中积累的经验。与H.263 v2(H.263+)或MPEG-4简单类(Simple Profile)相比,H.264在使用与上述编码方法类似的最佳编码器时,在大多数码率下最多可节省50%的码率。H.264在所有码率下都能持续提供较高的视频质量。H.264能工作在低延时模式以适应实时通信的应用(如视频会议),同时又能很好地工作在没有延时限制的应用,如视频存储和以服务器为基础的视频流式应用。H.264提供包传输网中处理包丢失所需的工具,以及在易误码的无线网中处理比特误码的工具。


    在系统层面上,H.264提出了一个新的概念,在视频编码层(Video Coding Layer,VCL)网络提取层(Network Abstraction Layer,NAL)之间进行概念性分割,前者是视频内容的核心压缩内容之表述,后者是通过特定类型网络进行递送的表述,这样的结构便于信息的封装和对信息进行更好的优先级控制。


1. 编码

帧内预测编码


    帧内编码用来缩减图像的空间冗余。为了提高H.264帧内编码的效率,在给定帧中充分利用相邻宏块的空间相关性,相邻的宏块通常含有相似的属性。因此,在对一给定宏块编码时,首先可以根据周围的宏块预测(典型的是根据左上角宏块、左边宏块和上面宏块,因为此宏块已经被编码处理),然后对预测值与实际值的差值进行编码,这样,相对于直接对该帧编码而言,可以大大减小码率。


    H.264提供9种模式进行4×4像素宏块预测,包括1种直流预测和8种方向预测。在图中,相邻块的A到I共9个像素均已经被编码,可以被用以预测,如果我们选择模式4,那么,a、b、c、d4个像素被预测为与E相等的值,e、f、g、h4个像素被预测为与F相等的值,对于图像中含有很少空间信息的平坦区,H.264也支持16×16的帧内编码。


帧间预测编码

    帧间预测编码利用连续帧中的时间冗余来进行运动估计和补偿。H.264的运动补偿支持以往的视频编码标准中的大部分关键特性,而且灵活地添加了更多的功能,除了支持P帧、B帧外,H.264还支持一种新的流间传送帧——SP帧,如图3所示。码流中包含SP帧后,能在有类似内容但有不同码率的码流之间快速切换,同时支持随机接入和快速回放模式,H.264的运动估计有以下4个特性。


不同大小和形状的宏块分割

    对每一个16×16像素宏块的运动补偿可以采用不同的大小和形状,H.264支持7种模式。小块模式的运动补偿为运动详细信息的处理提高了性能,减少了方块效应,提高了图像的质量。


高精度的亚像素运动补偿

    在H.263中采用的是半像素精度的运动估计,而在H.264中可以采用1/4或者1/8像素精度的运动估值。在要求相同精度的情况下,H.264使用1/4或者1/8像素精度的运动估计后的残差要比H.263采用半像素精度运动估计后的残差来得小。这样在相同精度下,H.264在帧间编码中所需的码率更小。


多帧预测

    H.264提供可选的多帧预测功能,在帧间编码时,可选5个不同的参考帧,提供了更好的纠错性能,这样更可以改善视频图像质量。这一特性主要应用于以下场合:周期性的运动、平移运动、在两个不同的场景之间来回变换摄像机的镜头。


去块滤波器

    H.264定义了自适应去除块效应的滤波器,这可以处理预测环路中的水平和垂直块边缘,大大减少了方块效应。


整数变换

    在变换方面,H.264使用了基于4×4像素块的类似于DCT的变换,但使用的是以整数为基础的空间变换,不存在反变换因为取舍而存在误差的问题。与浮点运算相比,整数DCT变换会引起一些额外的误差,但因为DCT变换后的量化也存在量化误差,与之相比,整数DCT变换引起的量化误差影响并不大。此外,整数DCT变换还具有减少运算量和复杂度,有利于向定点DSP移植的优点。


量化

    H.264中可选52种不同的量化步长,这与H.263中有31个量化步长很相似,但是在H.264中,步长是以12.5%的复合率递进的,而不是一个固定常数。


在H.264中,变换系数的读出方式也有两种:之字形(Zigzag)扫描和双扫描。大多数情况下使用简单的之字形扫描;双扫描仅用于使用较小量化级的块内,有助于提高编码效率。


熵编码

    视频编码处理的最后一步就是熵编码,在H.264中采用了两种不同的熵编码方法:通用可变长编码(UVLC)和基于文本的自适应二进制算术编码(CABAC)。


    在H.263等标准中,根据要编码的数据类型如变换系数、运动矢量等,采用不同的VLC码表。H.264中的UVLC码表提供了一个简单的方法,不管符号表述什么类型的数据,都使用统一变字长编码表。其优点是简单;缺点是单一的码表是从概率统计分布模型得出的,没有考虑编码符号间的相关性,在中高码率时效果不是很好。


    因此,H.264中还提供了可选的CABAC方法。算术编码使编码和解码两边都能使用所有句法元素(变换系数、运动矢量)的概率模型。为了提高算术编码的效率,通过内容建模的过程,使基本概率模型能适应随视频帧而改变的统计特性。内容建模提供了编码符号的条件概率估计,利用合适的内容模型,存在于符号间的相关性可以通过选择要编码符号邻近的已编码符号的相应概率模型来去除,不同的句法元素通常保持不同的模型


H.264的目标应用涵盖了大部分的视频服务,如有线电视远程监控、交互媒体、数字电视、视频会议、视频点播、流媒体服务等。


H.264为解决不同应用中的网络传输的差异。定义了两层:视频编码层(VCL:Video Coding Layer)负责高效的视频内容表示,网络提取层(NAL:Network AbstractionLayer)负责以网络所要求的恰当的方式对数据进行打包和传送(如图所示: 标准的整体框架)。


2. 冗余处理

H.264与以前的国际标准如H.263和MPEG-4相比,为达到高效的压缩,充分利用了各种冗余,统计冗余和视觉生理冗余。


统计冗余

频谱冗余(指色彩分量之间的相关性),空间冗余,还有时间冗余。这是视频压缩区别于静止图像的根本点,视频压缩主要利用时间冗余来实现大的压缩比。


视觉生理冗余

视觉生理冗余是由于人类的视觉系统(HVS)特性造成的,比如人眼对色彩分量的高频分量没有对亮度分量的高频分量敏感,对图像高频(即细节)处的噪声不敏感等。


针对这些冗余,视频压缩算法采用了不同的方法加以利用,但主要的考虑是集中在空间冗余和时间冗余上。H.264也采用混合(hybrid)结构,即对空间冗余和时间冗余分别进行处理。对空间冗余,标准通过变换及量化达到消除的目的,这样编码的帧叫I帧;而时间冗余则是通过帧间预测,即运动估计和补偿来去除,这样编码的帧叫P帧或B帧。与以前标准不同的是,H.264在编码I帧时,采用了帧内预测,然后对预测误差进行编码。这样就充分利用了空间相关性,提高了编码效率。H.264帧内预测以16x16的宏块为基本单位。首先,编码器将与当前宏块同一帧的邻近像素作为参考,产生对当前宏块的预测值,然后对预测残差进行变换与量化,再对变换与量化后的结果做熵编码。熵编码的结果就可以形成码流了。由于在解码器端能够得到的参考数据都是经过反变换与反量化后的重建图像,因此为了使编解码一致,编码器端用于预测的参考数据就和解码器端一样,也是经过反变换与反量化后的重建图像。


市场

按编解码功能划分,H.264市场可划分为解码市场、编码市场。


1. 解码

H.264解码产品,主要有:支持H.264标准的解码集成电路,含专用解码芯片和系统芯片SoC;支持H.264标准的解码软件,用于各类电子产品。


最先大规模采用H.264解码芯片的,是卫星高清机顶盒。


随着互联网视频服务的快速崛起,各类智能电子设备都陆续支持视频网络下载及播放。H.264标准一直是网络视频的主要压缩技术之一,且在又有逐步取代Flash视频格式的发展趋势。其主要支持者,是微软的IE浏览器和苹果公司的系列产品,前者保证了H.264在桌面设备市场的优势,后者保证了H.264在便携设备市场的优势。


然而,由于谷歌公司决定在其新一代浏览器Chrome中支持新的视频编解码技术WebM、而不支持H.264,使得H.264在网络视频市场的前景受到很大的挑战。


2. 编码

由于H.264出色的编码效率,使其很快就被以视频监控设备为主体的编码设备市场所接受。


H.264高效的编码效率,对相同视频节目占用较小的网络带宽和存储空间。H.264编码器的主要指标有:支持的分辨率和帧率,编码延时,编码码流兼容性,码流控制精度等指标。大部分编码器分辨率支持到1920X1080,帧率为25帧(PAL)或者30帧(N制),编码延时在200毫秒以上。




好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***