[技术帖]新一代视频压缩编码标准——H.264/AVC
最近看到有些字幕组开始采用H.264作为视频编码格式而之前对于这个编码比较陌生,遂开一技术帖,一是给自己看,二是也让大家了解一下
以下皆为Google上找的相关资料,特转之
1、纵览最新视频编码标准H.264/AVC
H.264/AVC 是ITU-T VCEG 和ISO/IEC MPEG 共同开发的视频处理标准,ITU-T作为标准建议H.264,ISO/IEC作为国际标准14496-10(MPEG-4 第10部分)高级视频编码(AVC)。
MPEG-2视频编码标准(又称为ITU-T H.262)已有10年的历史了,由MPEG-1扩充而来,支持隔行扫描。使用十分广泛,几乎用于所有的数字电视系统,适合标清和高清电视,适合各种媒体传输,包括卫星、有线、地面等,都能有效地传输。然而,类似xDSL、UMTS(通用移动系统)技术只能提供较小的传输速率,甚至DVB-T,也没有足够的频段可用,提供的节目很有限,随着高清电视的引入,迫切需要高压缩比技术的出现。
应用于电信的视频编码经历了ITUT H.261、H.262(MPEG-2)、H.263、H.263+、H.263++,提供的服务从ISDN和T1/E1到PSTN、移动无线网和LAN/INTERNET网。
最近MPEG-4 第二部分进入了实用领域,提供了视频形状编码,目标是与MPEG-2一样获得广泛的数字电视应用。
1998年,视频编码专家组(VCEG-ITU-T SG16 Q.6)启动了H.26L工程,旨在研制出新的压缩标准,与以前的任何标准相比,效率要提高一倍,同时具有简单、直观的视频编码技术,网络友好的视频描述,适合交互和非交互式应用(广播、存储、流煤体)。
2001年12月,VCEG和运动图像专家组(MPEG-ISO/IEC JTC 1/SC 29/WG 11)组成了联合视频组(JVT,Joint Video Team),研究新的编码标准H.264/AVC,该标准于2003年3月正式获得批准。
视频的各种应用必须通过各种网络传送,这要求一个好的视频方案能处理各种应用和网络接口。H.264/AVC为了解决这个问题,提供了很多灵活性和客户化特性。H.264/AVC的设计方案包含两个层次,视频编码层(VCL,Video Coding Layer)和网络抽象层(NAL,Network Abstraction Layer)。视频编码层主要致力于有效地表示视频内容,网络抽象层格式化VCL视频表示,提供头部信息,适合多种传输和存储媒体。
VCL的设计同以前的ITU-T和 ISO/IEC JTC一样,基于块的混合视频编码方法。基本的源编码算法是: 利用时间统计的相关性,开发帧间预测算法;利用预测残留变换编码,开发空间统计的相关性。在提高编码效率方面,没有一个单一的算法做出特别的贡献,而是大量的小的改善算法综合产生的结果。
一 主要特性
1. H.264/AVC相对以前的编码方法,以MPEG-2为例,在图像内容预测方面提高编码效率,改善图像质量的主要特点如下:
● 可变块大小运动补偿: 选择运动补偿大小和形状比以前的标准更灵活,最小的亮度运动补偿块可以小到4×4。
● 1/4采样精度运动补偿:以前的标准最多1/2精度运动补偿,首次1/4采样精度运动补偿出现在MPEG-4第二部分高级类部分,但H.264/AVC大大减少了内插处理的复杂度。
● 运动矢量可跨越图像边界:在以前的标准中,运动矢量限制在已编码参考图像的内部。图像边界外推法作为可选技术首次出现在H.263中。
● 多参考图像运动补偿:在MPEG-2及以前的标准中,P帧只使用一帧,B帧只使用两帧图像进行预测。H.264/AVC使用高级图像选择技术,可以用以前已编码过且保留在缓冲区的大量的图像进行预测,大大提高了编码效率。
● 消除参考图像顺序和显示图像顺序的相关性:在以前的标准中,参考图像顺序依赖显示图像顺序,H.264/AVC消除了该限制,可以任意选择。
● 消除参考图像与图像表示方法的限制:在以前的标准中,B帧图像不能作为预测图像,H.264/AVC 在很多情况可以利用B帧图像作为参考。
● 加权预测: H.264/AVC采用新技术,允许加权运动补偿预测和偏移一定量。在淡入淡出场景中该技术极大提高编码效率,该技术还可用于其他多种用途。
● 改善“跳过”和“直接”运动推测:在以前的标准中,预测编码图像的“跳过”区不能有运动。当编码有全局运动的图像时,该限制非常有害。H.264/AVC对“跳过”区的运动采用推测方法。对双预测的B帧图像,采用高级运动预测方法,称为“直接”运动补偿,进一步改善编码效率。
● 帧内编码直接空间预测: 将编码图像边沿进行外推应用到当前帧内编码图像的预测。
● 循环去块效应滤波器: 基于块的视频编码在图像中存在块效应,主要来源于预测和残余编码。自适应去块效应滤波技术是非常著名的技术,能有效消除块效应,改善视频的主观和客观质量。
2. 除改善预测方法外,其他改善编码效率的特性如下:
● 小块变换: 以前的标准变换的块都是8×8,H.264/AVC主要使用4×4块变换,使编码器表示信号局部适应性更好,更适合预测编码,减少“铃”效应。另外图像边界需要小块变换。
● 分级块变换: H.264/AVC通常使用小块变换,但有些信号包含足够的相关性,要求以大块表示,H.264/AVC有两种方式实现。低频色度信号可用8×8,;对帧内编码,可使用特别的编码类型,低频亮度信号可用16×16块。
● 短字长变换: 所有以前标准使用的变换要求32位运算,H.264/AVC只使用16位运算。
● 完全匹配反变换: 所有以前标准反变换和变换之间存在一定容限的误差,因此,每个解码器输出视频信号都不相同,产生小的漂移,最终影响图像的质量,H.264/AVC实现了完全匹配。
● 基于上下文的熵编码: H.264/AVC使用两种熵编码方法,CAVLC(上下文自适应的可变长编码)和CABAC(上下文自适应二进制算术编码),两种都是基于上下文的熵编码技术。
3. H.264/AVC具有强大的纠错功能和各种网络环境操作灵活性,主要特性如下:
● 参数集结构:H.264/AVC参数集结构设计了强大、有效的传输头部信息。在以前的标准中,如果少数几位关键信息丢失,可能解码器产生严重解码错误。H.264/AVC采用很灵活、特殊的方式,分开处理关键信息,能在各种环境下可靠传送。
● NAL单元语法结构:H.264/AVC中的每一个语法结构放置在称为NAL的单元中,以前的标准采用强制性特定的位流接口。NAL单元语法结构允许很自由的客户化,几乎适合所有的网络接口。
● 灵活的像条大小:在MPEG-2中,规定了严格的像条结构,头部数据量大,降低预测效率,编码效率低。在H.264/AVC可采用非常灵活的像条大小。
● 灵活宏块排序(FMO):H.264/AVC可以将图像划分为像条组,又称为图像区,每个像条可以独立解码。FMO通过管理图像区之间的关系,具有很强的抗数据丢失能力。
● 任意像条排序:因为每个像条几乎可以独立解码,所以像条可以按任意顺序发送和接收,在实时应用中,可以改善端到端的延时特性,特别适合于接收顺序和发送顺序不能对应的网络中,如使用INTERNET网络协议的应用。
● 冗余图像:为提高抗数据丢失的能力,H.264/AVC设计中包含一种新的能力,允许编码器发送图像区的冗余表示,当图像区的主表示丢失时仍可以正确解码。
● 数据划分:视频流中的编码信息的重要性不同,有些信息(如运动矢量、预测信息等)比其他信息更为重要。H.264/AVC可以根据每个像条语法元素的范畴,将像条语法划分为3部分,分开传送。
二 网络层
NAL规范视频数据的格式,主要是提供头部信息,以适合各种媒体的传输和存储。NAL支持各种网络,包括:
● 任何使用RTP/IP协议的实时有线和无线Internet 服务。
● 作为MP4文件存储和多媒体信息文件服务。
● MPEG-2系统。
● 其他网。
1. NAL 单元
编码的视频流组织成NAL单元,视频数据放置在网络单元中传输,每个网络单元包含整数个字节,第一个字节是头部信息,指示NAL单元的数据类型,其余是净荷。
净荷数据与仿真预防字节做交织处理,仿真预防字节是特殊值字节,防止偶然在净荷中出现同步字节图样。
NAL规定一种通用的格式,既适合面向包传输,也适合流传送。实际上,包传输和流传输的方式是相同的,不同之处是流传输前面增加了一个起始码前缀。
2. NAL单元在字节流中的应用
类似H.320和MPEG-2/H.222.0等传输系统,传输NAL作为有序连续字节或比特流,同时要依靠数据本身识别NAL单元边界。在这样的应用系统中,H.264/AVC规范定义了字节流格式,每个NAL单元前面增加3个字节的前缀,即同步字节。在比特流应用中,每个图像需要增加一个附加字节作为边界定位。还有一种可选特性,在字节流中增加附加数据,用做扩充发送数据量,能实现快速边界定位,恢复同步。
3. NAL单元在面向包传送中的应用
在类似Internet/RTP面向包传送协议系统中,包结构中包含包边界识别字节,在这种情况下,不需要同步字节。
4. VCL和非VCL的NAL单元
NAL单元分为VCL和非VCL两种,VCL NAL单元包含视频图像采样信息,非VCL包含各种有关的附加信息,例如参数集(头部信息,应用到大量的VCL NAL单元)、提高性能的附加信息、定时信息等。
5. 参数集
参数集是很少变化的信息,用于大量VCL NAL单元的解码,分为两种类型:
● 序列参数集,作用于一串连续的视频图像,即视频序列。
● 图像参数集,作用于视频序列中的一个或多个个别的图像。
序列和图像参数集机制,减少了重复参数的传送,每个VCL NAL单元包含一个标识,指向有关的图像参数集,每个图像参数集包含一个标识,指向有关的序列参数集的内容,因此,只用少数的指针信息,引用大量的参数,大大减少每个VCL NAL单元重复传送的信息。
序列和图像参数集可以在发送VCL NAL单元以前发送,并且重复传送,大大提高纠错能力。序列和图像参数集可以在“带内”,也可以用更为可靠的其他“带外”通道传送。
6. 存储单元
一组指定格式的NAL单元称为存储单元,每个存储单元对应一个图像。每个存储单元包含一组VCL NAL单元,组成一个主编码图像,VCL NAL单元由表示视频图像采样的像条所组成。存储单元前面可以加一个前缀,分界存储单元,附加增强信息(SEI)(如图像定时信息)也可以放在主编码图像的前面。
主编码图像后附加的VCL NAL单元,包含同一图像的冗余表示,称为冗余编码图像,当主编码图像数据丢失或损坏时,可用冗余编码图像解码。
7. 编码视频序列
一个编码视频序列由一串连续的存储单元组成,使用同一序列参数集。每个视频序列可独立解码。编码序列的开始是即时刷新存储单元(IDR)。IDR是一个I帧图像,表示后面的图像不用参考以前的图像。一个NAL单元流可包含一个或更多的编码视频序列。
三 视频编码层
视频编码层在原理上与MPEG2是一致的,采用变换编码,使用空间和时间预测的混合编码。总之图像划分成块,一个序列的第一个图像,即随机存取点,典型是帧内编码,帧内每个采样的预测只利用帧内已编码的空间相邻的采样,选择哪些相邻采样进行预测,以及如何预测,这些附加信息必须同时被传送到解码器同步处理。随机存取点之间的图像使用帧间编码。
为了实现下一块或下一个图像的预测,编码器包含一个解码器,对量化变换系数进行与解码器解码相同的反量化和反变换过程,导出解码预测残余,解码残余与预测相加,结果送到去块效应滤波器,产生解码视频输出。
1. 图像、帧和场
一个编码视频序列由连续的编码图像组成,编码图像可以是整个一帧图像,也可以是一场图像。H.264/AVC编码是基于几何概念的表示方法,而不是基于定时的概念。
2. YcbCr色度空间和4:2:0采样
人的视觉特性按照亮度和色度信息分别感知世界。视频的传输可以利用该特性减少色度信息传送。H.264/AVC目前采用与MPEG-2主类相同的4:2:0采样结构、8比特精度,高精度颜色和高比特精度的建议正在讨论中。
3. 宏块划分
每个视频图像帧或场都可以划分为固定大小的宏块,宏块是解码的基本模块单元,通常是一个16×16亮度像素和两个8×8彩色分量像素的长方型区域。所有宏块的亮度和色度采样在空间或时间上进行预测,对预测残余进行变换编码。
4. 像条和像条组
像条由宏块组成,像条是图像的子集,包含图像参数集,语法元素可以被分析,图像可以被独立解码。按照宏块映射表规定的顺序,在位流中安排宏块的传输顺序,而不是按光栅扫描顺序。
利用像条组的概念,H.264/AVC支持灵活宏块排序特性(FMO)。FMO改变了图像划分为像条和宏块的方式。每个像条组是多个宏块集合,通过宏块到像条组的影射表定义,该影射表在图像参数集中指定。每个宏块有一个像条组标识号,所有像条组标识号构成宏块到像条组影射表。每个像条组由一个或多个像条组成,因此像条是一个宏块序列,同一像条组中的宏块,按光栅顺序处理。
利用FMO,图像可以划分为许多宏块扫描图样,例如交织图样、点缀图样,一个或多个前景像条组、剩余像条组,或棋盘型图样影射等。每个像条组分别传送,后两种如图2所示,左边宏块到像条组的影射证明在关注局部型的编码应用中非常有用。右边宏块到像条组的影射证明适合保密型会议系统等应用。
无论是否使用FMO,H.264/AVC支持5种像条编码类型:
I像条:最简单的编码类型,所有的宏块不参考视频序列中其他的图像。
P像条:除了I像条编码类型外,P像条的部分宏块可以利用帧间预测,每个预测块至多可使用一个运动补偿预测信号。
B像条:除了P像条编码类型外,B像条的部分宏块可以利用帧间预测,每个预测块可使用两个运动补偿预测信号。
以上三种与以前的标准相似,主要是参考图像不同,其余两种像条类型是SP(切换P) SI(切换I),是新的类型,用于在不同位率编码码流之间进行有效切换。
SP像条: 称作切换P像条,能在不同编码图像之间有效地切换。
SI像条:称作切换I像条,允许SP像条的宏块完全匹配,达到随机读取数据进行解码和恢复错误的目的。
5. 宏块的编解码过程
所有宏块的亮度和色度采样要进行空间或时间的预测,对预测的残余进行变换编码,为了实现变换编码,每个颜色分量的预测残余要再划分为更小的4×4块,每块利用整数变换,变换系数被量化,最后是熵编码。
如图1所示,一个宏块视频编码层的方框图,输入的视频信号划分为宏块,映射宏块和像条组的关系,逐个选择像条,处理像条中每个宏块。
6. 自适应帧/场编码操作
在隔行扫描帧中,当有移动的对象或摄像机移动时,与逐行相比,两个相邻行倾向减少统计的相关性,这种情况应比每场分别压缩更为有效。为了达到高效率,H.264/AVC在编码帧时,有以下可选方案:
● 结合两场成一个完整帧,作为帧编码,称为帧模式。
● 两场分别编码,称为场模式。
● 结合两场成一个完整帧,作为帧压缩。在编码时,划分垂直相邻的两个宏块对成两个场宏块对或帧宏块,再进行编码。
每帧图像可自适应选择3种模式之一进行编码。在前两种之间进行选择称为图像自适应帧/场编码(PAFF),当一帧作为两场编码时,每场划分为宏块,编码方式与帧编码方式很相似,主要有下面的例外:
● 运动补偿用参考场,而不是参考帧。
● 变换系数的“之字型”扫描方式不同。
● 宏块水平边沿去块滤波器的强度不选用“强”,因为场行在空间上是两倍帧行的距离。
在研制H.264/AVC标准时,据报道,采用ITU-601分辨率,PAFF编码技术与帧编码相比可减少码率16%到20%。
如果图像由运动区和非运动区混合组成,非运动区用帧模式、运动区用场模式是最有效的编码方法。因此每个垂直宏块对(16×32)可独立选择编码(帧/场)模式。这种编码选择称为宏块自适应帧/场编码(MBAFF)。对于帧模式宏块对,每个宏块包含帧行,对于场模式宏块对,顶部宏块包含顶场行,底部宏块包含底场行。
处理场宏块对的每个宏块与帧PAFF模式相似,然而,因为在MBAFF帧中发生场/帧宏块对混合,需要修改用作下列用途的方法:
● 之字型扫描。
● 运动矢量预测。
● 帧内预测模式的预测。
● 帧内预测帧采样精度。
● 去块效应滤波器。
● 上下文模型的熵编码。
主要思想是尽可能保留多的空间一致性,MBAFF帧的空间相邻的规范相当复杂,下面讲到的空间相邻都是指非MBAFF帧。
MBAFF 和PAFF的另一个重要区别是:使用MBAFF方法, 一个场不能使用同一帧的另一个场中的宏块作为运动补偿参考。这样,有时PAFF比MBAFF编码更有效,特别是在快速全局运动、变换场景、图像刷新等情况下。
在开发MBAFF标准期间,据报道,采用ITU-601分辨率,MBAFF编码技术比PAFF相比可减少码率14%到16%。
7. 帧内预测
根据像条编码类型,每个宏块可以选择几种编码类型之一。所有像条类型支持两级帧内编码,称为INTRA-4×4 和 INTRA-16×16。
INTRA-4×4模式基于分别预测每个4 ×4亮度块,适合表现图像细节部分。而INTRA-16×16模式将整个16×16亮度块进行预测,适合平滑图像区。此外对这两种亮度预测类型,色度单独进行预测。作为INTRA-4×4和INTRA-16×16的另一种选择,I_PCM编码类型允许编码器简单跳过预测和变换编码过程,直接发送采样值。I_PCM允许编码器精确地表示采样,通常表示一些反常图像,而没有明显增加数据量。
8. 帧间预测
● p像条帧间预测
除了帧内宏块编码类型外,P像条宏块使用多种预测类型,即运动补偿编码类型。为了方便运动描述,每个P型宏块对应于指定的固定大小的宏块划分。亮度块的划分大小为:16×16、16×8、8×16、8×8。
语法允许运动矢量跨越图像边界,这种情况参考帧需用外插法推算出图像外的采样值。利用邻近块的平均或方向预测,用差分编码计算运动矢量。
语法支持多图像运动补偿预测,以前编码的多个图像都可用作运动补偿参考,每个运动补偿需要指示参考图像的索引。一个8×8块划分成的小于8×8块的运动补偿使用同一参考图像索引,该功能要求编码和解码器具有多帧图像缓冲器,解码器通过位流中的管理控制操作信息与编码器同步。
除了运动补偿宏块模式外,P宏块可使用P_Skip模式,这种模式没有量化预测误差、不用传送运动矢量和参考索引参数。信号重建与P_16×16宏块类型预测信号类似,采用多帧缓冲区索引0的图像作为参考图像。重建P_Skip宏块的运动矢量与16×16块运动矢量预测类似。P_Skip编码类型适合没有变化或固定运动的区域,如摇镜头等,有极高的压缩率。
● B像条的帧间预测
B像条相对P像条的概念与以前的标准类似,但有些不同,B像条可以作为运动补偿预测的参考图像,B像条可以对两个补偿预测值进行加权运算。
9. 变换和量化
与以前的视频编码标准类似,H.264/AVC利用预测残余变换编码。然而,H.264/AVC变换施加4×4块上,不用离散余弦变换(DCT),采用与离散余弦变换相似特性的整数变换。因为使用整数运算,所以反变换没有误差。
10. 熵编码
H.264/AVC支持两种熵编码方法,最简单的熵编码方法是:对所有的语法元素,除了量化系数外,使用单一无限可扩展的码字表。这样不必为每个语法元素设计一个专用的VLC表,只需要按照数据的统计特性,客户化影射到单一码字表。使用exp-Golomb码建立单一码表,具有很简单、有规则的解码特性。
为了有效传送量化的变换系数,CAVLC(上下文自适应的可变长编码)是很有效的方法。在该方案中,对于各种语法元素的VLC码表按照已传送的语法元素可以进行切换。因为VLC表设计匹配相应的条件统计,改善了熵编码的性能。
在H.264/AVC中的算术编码引擎,与概率相关的估计等都不使用乘法操作,而是使用简单的移位和查找操作,与CAVLC操作相比,CABAC典型减少码率5%~15%。在隔行扫描视频,效果更明显。
11. 去块循环滤波器
基于块编码的压缩算法的特点是偶尔产生可见的块结构,由于块边沿的精度比内部差,块效应是目前压缩算法的常见人工瑕疵。H.264/AVC定义了一个自适应循环滤波器,滤波的强度通过几个语法元素控制。
滤波的基本思想是: 如果块边沿的绝对差值相对比较大,出现块人工瑕疵的可能性就很大,因此需要进行相应处理。然而,如果差值幅度很大,编码量化过程的误差不能解释,边沿很可能反映了源图像的实际样值,不需处理。
经过滤波处理,减少了块效应,而图像的质量基本不受影响,因此主观质量大大改善。如果不滤波,同样的主观质量,需要多出5%~10%的码率。
12. 假想参考解码器模型
标准的好处在于保证所有符合标准的解码器能够解码出一致的视频质量。要实现标准,仅仅提供编码算法的描述是不够的,在实时系统中,指定如何馈送码流比特给解码器,解码的图像如何移出解码器等都是很重要的。要实现该功能,必须指定输入/出缓冲器模型和开发与实现无关的接收机模型。这样的接收机模型称为假想参考模型(HRD)。编码器不允许产生假想参考模型不能解码的位流。因此如果所有接收机都模拟假想参考模型的行为,可以保证所有解码器解出的码流具有很好的一致性。
四 类和级及其应用
1. 类和级
类和级指定符合点,这些符合点用于实现各种标准应用之间的互操作性。类定义一组编码工具和算法,用于产生一致性的比特流,级限定比特流的部分关键参数。
所有的解码器符合指定的类必须支持该类定义的所有特性,编码器不必要求使用该类支持的任何特定的特性集,但必须提供一致性的比特流,即使支持该类的解码器能实现解码。
H.264/AVC定义了3类:基类、主类和扩展类。
基类支持除下面两组特性外的所有的H.264/AVC特性:
(1)B像条、加权预测、CABAC、场编码、图像或宏块在帧场编码之间自适应切换。
(2) PI/SI像条和像条数据分割。
主类支持第一组特性,但主类不支持FMO、ASO和冗余图像特性,扩展类支持除CABAC外所有H.264/AVC特性,序列参数中包含了一些标志指示解码该码流要求解码器支持的类。
在H.264/AVC,所有类使用相同的级定义,但个别实现时,可能每个支持的类支持的级不完全相同。H.264/AVC定义了15个级。
2. 新标准类的使用领域
H.264/AVC的高压缩效率,扩充了现有的应用领域,至少包含以下领域:
(1)交互视频服务,通常速率1Mbps以下,低延迟。ITU-T SG16正在修改有关系统建议, IETF正在设计RTP净荷打包器,以支持H.264/AVC在交互视频方面的应用。近期主要利用基类,然后过渡到另两类。主要应用如下:
H.320 交互式视频服务,利用基于ISDN视频会议的电路交换;
3 GPP交互式H.324/M服务;
H.323交互式视频服务,基于INTERNET,利用IP/RTP协议。
(2)娱乐视频应用,1Mbps~8Mbps码率,0.5 到 2秒中等时延。H.222.0|MPEG-2正在被修改以支持这方面的应用,这些应用主要利用主类,主要应用如下:
有线、卫星、地面、DSL等广播电视;
标清和高清DVD;
通过各种媒体的视频点播。
(3)流媒体服务,典型50kbps 到1.5Mbps,2秒以上的时延,这些应用主要利用基类或扩展类。有线或无线使用情况有所不同,主要应用如下:
3GPP 流, 利用IP/RTP传输,RTSP作会话设置,3GPP规范的扩充部分可能仅使用基类;
有线INTERNET 流,利用IP/RTP传输,RTSP作会话设置。
(4)其他服务,主要是低码率,以文件传送方式,不考虑时延,根据不同应用,可能用到3类,主要应用如下:
3GPP 多媒体信息服务;
视频邮件。
六 结论
H.264代表了当前业界最先进的视频压缩技术,且具有以下无可比拟的优越性。
1. 码率低:和MPEG-2等压缩技术相比,在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG-2的1/2~1/3。显然,H.264压缩技术的采用将大大节省用户的下载时间和数据流量收费。
2. 图像质量高:H.264能提供连续、流畅的高质量图像。
3. 容错能力强:H.264提供了解决在不稳定网络环境下容易发生的丢包等错误的必要工具。
4. 网络适应性强:H.264提供了网络适应层, 使得H.264的文件能容易地在不同网络上传输。
H.264超越以往的视频编解码标准,成为各个厂商竞争的焦点。目前,各主流厂商纷纷宣布,已经或将在明年推出产品化的H.264。在视频广播领域,美国哈雷公司宣布其产品MV100编码器可以支持H.264协议,哈雷原来的MPEG-2编码器MV100硬件平台已经兼容H.264能力,只需从软件升级即可。在欧洲,有两个用户已经选用了此种编码器。其中一个是法国的卫星及直播星运营商CanalSatellite,它采用哈雷高性能的数字前端系统在ADSL上传输视频业务,MV100超低码率编码能力可以实现在多种电信网上传输广播级视频节目。另外是第一个即将投入正式商业运营的英国Video network limited。
回复: [技术帖]新一代视频压缩编码标准——H.264/AVC
2、H.264与WMV9的区别及其优势Q:最近,经常听人们提起H.264与Windows Media Video 9。似乎是一种影像压缩技术,那么与MPEG2及MPEG4有什么区别呢?
A:H.264与Windows Media Video(WMV)9都属于专用于压缩动态图像数据的“编解码器(Codec)”程序。
一般来说,如果动态图像数据未经压缩就使用的话,数据量非常大,容易造成通信线路故障及数据存储容量紧张。因此,在发送动态图像时、或者把影像内容保存在DVD上时、以及使用存储介质容量较小的数码相机或相机手机拍摄映像时,就必须使用编解码器。虽然编解码器有许多种类,但DVD-Video与微波数字电视等使用的主要是MPEG2,数码相机等摄像时主要使用MPEG4。
H.264与WMV9是用于高清晰度数字电视(HDTV)等高清晰度映像的编解码器,今后将日趋普及。比如2小时的HDTV节目,如果使用MPEG2最小只能压缩至30GB,而使用H.264、WMV9这样的高压缩率编解码器,在画质丝毫不降的前提下可压缩到15GB以下。
将在下一代光盘领域展开竞争
H.264是最新的MPEG压缩技术,目前负责通信技术标准化的ITU-T(国际电信联盟电信标准化部门)与ISO(国际标准化机构)正在合作制订相关标准,H.264又名“MPEG4 AVC(Advanced Video Coding)”。
H.264的数据压缩率在MPEG2的2倍以上、MPEG4的1.5倍以上。从理论上来说,在相同画质、相同容量的情况下,可比目前的DVD光盘多保存2倍以上时间的影像。有望作为电影与音乐会等映像内容与便携设备的编解码器广泛使用。预计支持该技术的产品与服务将于2004年内问世。
而WMV9是微软开发的动态图像压缩技术,是WMV系列的最新版本。虽然WMV是微软的独有规格,但因该公司的Windows标准支持WMV,从而得到了迅速普及。WMV9的数据压缩率与H.264一样,也被考虑用于映像内容与移动设备等各种用途。该公司1月发表的“Windows Media HD”就是把WMV9扩展为可供HDTV使用的规格。
可以说,H.264与WMV9两者都是东芝与NEC正在推进行的下一代光盘规格“HD DVD”、双层DVD规格“HD DVD9”使用的编解码器的有力竞争者。不论使用哪一种,都可以在15GB的光盘上存储2小时左右的HDTV节目与HD格式电影。目前人们普遍认为国际标准规格H.264比WMV9优势更明显。
回复: [技术帖]新一代视频压缩编码标准——H.264/AVC
3、视频编码标准的发展:从H.261到H.264数字视频技术广泛应用于通信、计算机、广播电视等领域,带来了会议电视、可视电话及数字电视、媒体存储等一系列应用,促使了许多视频编码标准的产生。ITU-T与ISO/IEC是制定视频编码标准的两大组织,ITU-T的标准包括H.261、H.263、H.264,主要应用于实时视频通信领域,如会议电视;MPEG系列标准是由ISO/IEC制定的,主要应用于视频存储(DVD)、广播电视、因特网或无线网上的流媒体等。两个组织也共同制定了一些标准,H.262标准等同于MPEG-2的视频编码标准,而最新的H.264标准则被纳入MPEG-4的第10部分。
本文按照ITU-T视频编码标准的发展过程,介绍H.261、H.263及H.264。
H.261视频编码标准
H.261是ITU-T为在综合业务数字网(ISDN)上开展双向声像业务(可视电话、视频会议)而制定的,速率为64kb/s的整数倍。H.261只对CIF和QCIF两种图像格式进行处理,每帧图像分成图像层、宏块组(GOB)层、宏块(MB)层、块(Block)层来处理。
H.261是最早的运动图像压缩标准,它详细制定了视频编码的各个部分,包括运动补偿的帧间预测、DCT变换、量化、熵编码,以及与固定速率的信道相适配的速率控制等部分。
H.263视频编码标准
H.263是最早用于低码率视频编码的ITU-T标准,随后出现的第二版(H.263+)及H.263++增加了许多选项,使其具有更广泛的适用性。
H.263视频压缩标准
H.263是ITU-T为低于64kb/s的窄带通信信道制定的视频编码标准。它是在H.261基础上发展起来的,其标准输入图像格式可以是S-QCIF、QCIF、CIF、4CIF或者16CIF的彩色4∶2∶0亚取样图像。H.263与H.261相比采用了半象素的运动补偿,并增加了4种有效的压缩编码模式。
无限制的运动矢量模式允许运动矢量指向图像以外的区域。当某一运动矢量所指的参考宏块位于编码图像之外时,就用其边缘的图像象素值来代替。当存在跨边界的运动时,这种模式能取得很大的编码增益,特别是对小图像而言。另外,这种模式包括了运动矢量范围的扩展,允许使用更大的运动矢量,这对摄像机运动特别有利。
基于句法的算术编码模式使用算术编码代替霍夫曼编码,可在信噪比和重建图像质量相同的情况下降低码率。
先进的预测模式允许一个宏块中4个8×8亮度块各对应一个运动矢量,从而提高了预测精度;两个色度块的运动矢量则取这4个亮度块运动矢量的平均值。补偿时,使用重叠的块运动补偿,8×8亮度块的每个象素的补偿值由3个预测值加权平均得到。使用该模式可以产生显著的编码增益,特别是采用重叠的块运动补偿,会减少块效应,提高主观质量。
PB-帧模式规定一个PB-帧包含作为一个单元进行编码的两帧图像。PB-帧模式可在码率增加不多的情况下,使帧率加倍。
H.263视频压缩标准版本2
ITU-T在H.263发布后又修订发布了H.263标准的版本2,非正式地命名为H.263+标准。它在保证原H.263标准核心句法和语义不变的基础上,增加了若干选项以提高压缩效率或改善某方面的功能。原H.263标准限制了其应用的图像输入格式,仅允许5种视频源格式。H.263+标准允许更大范围的图像输入格式,自定义图像的尺寸,从而拓宽了标准使用的范围,使之可以处理基于视窗的计算机图像、更高帧频的图像序列及宽屏图像。
为提高压缩效率,H.263+采用先进的帧内编码模式;增强的PB-帧模式改进了H.263的不足,增强了帧间预测的效果;去块效应滤波器不仅提高了压缩效率,而且提供重建图像的主观质量。
为适应网络传输,H.263+增加了时间分级、信噪比和空间分级,对在噪声信道和存在大量包丢失的网络中传送视频信号很有意义;另外,片结构模式、参考帧选择模式增强了视频传输的抗误码能力。
H.263++视频压缩标准
H263++在H263+基础上增加了3个选项,主要是为了增强码流在恶劣信道上的抗误码性能,同时为了提高增强编码效率。这3个选项为:
选项U——称为增强型参考帧选择,它能够提供增强的编码效率和信道错误再生能力(特别是在包丢失的情形下),需要设计多缓冲区用于存贮多参考帧图像。
选项V——称为数据分片,它能够提供增强型的抗误码能力(特别是在传输过程中本地数据被破坏的情况下),通过分离视频码流中DCT的系数头和运动矢量数据,采用可逆编码方式保护运动矢量。
选项W——在H263+的码流中增加补充信息,保证增强型的反向兼容性,附加信息包括:指示采用的定点IDCT、图像信息和信息类型、任意的二进制数据、文本、重复的图像头、交替的场指示、稀疏的参考帧识别。
H.264视频编码标准
H.264是由ISO/IEC与ITU-T组成的联合视频组(JVT)制定的新一代视频压缩编码标准。事实上,H.264标准的开展可以追溯到8年前。1996年制定H.263标准后,ITU-T的视频编码专家组(VCEG)开始了两个方面的研究:一个是短期研究计划,在H.263基础上增加选项(之后产生了H.263+与H.263++);另一个是长期研究计划,制定一种新标准以支持低码率的视频通信。长期研究计划产生了H.26L标准草案,在压缩效率方面与先期的ITU-T视频压缩标准相比,具有明显的优越性。2001年,ISO的MPEG组织认识到H.26L潜在的优势,随后ISO与ITU开始组建包括来自ISO/IEC MPEG与ITU-T VCEG的联合视频组(JVT),JVT的主要任务就是将H.26L草案发展为一个国际性标准。于是,在ISO/IEC中该标准命名为AVC(Advanced Video Coding),作为MPEG-4标准的第10个选项;在ITU-T中正式命名为H.264标准。H.264的主要优点如下:
在相同的重建图像质量下,H.264比H.263+和MPEG-4(SP)减小50%码率。
对信道时延的适应性较强,既可工作于低时延模式以满足实时业务,如会议电视等;又可工作于无时延限制的场合,如视频存储等。
提高网络适应性,采用“网络友好”的结构和语法,加强对误码和丢包的处理,提高解码器的差错恢复能力。
在编/解码器中采用复杂度可分级设计,在图像质量和编码处理之间可分级,以适应不同复杂度的应用。
相对于先期的视频压缩标准,H.264引入了很多先进的技术,包括4×4整数变换、空域内的帧内预测、1/4象素精度的运动估计、多参考帧与多种大小块的帧间预测技术等。新技术带来了较高的压缩比,同时大大提高了算法的复杂度。
4×4整数变换
以前的标准,如H.263或MPEG-4,都是采用8x8的DCT变换。H.26L中建议的整数变换实际上接近于4×4的DCT变换,整数的引入降低了算法的复杂度,也避免了反变换的失配问题,4×4的块可以减小块效应。而H.264的4×4整数变换进一步降低了算法的复杂度,相比H.26L中建议的整数变换,对于9b输入残差数据,由以前的32b降为现在的16b运算,而且整个变换无乘法,只需加法和一些移位运算。新的变换对编码的性能几乎没有影响,而且实际编码略好一些。
基于空域的帧内预测技术
视频编码是通过去除图像的空间与时间相关性来达到压缩的目的。空间相关性通过有效的变换来去除,如DCT变换、H.264的整数变换;时间相关性则通过帧间预测来去除。这里所说的变换去除空间相关性,仅仅局限在所变换的块内,如8×8或者4×4,并没有块与块之间的处理。H.263+与MPEG-4引入了帧内预测技术,在变换域中根据相临块对当前块的某些系数做预测。H.264则是在空域中,利用当前块的相临象素直接对每个系数做预测,更有效地去除相临块之间的相关性,极大地提高了帧内编码的效率。
H.264基本部分的帧内预测包括9种4×4亮度块的预测、4种16×16亮度块的预测和4种色度块的预测。
运动估计
H.264的运动估计具有3个新的特点:1/4象素精度的运动估计;7种大小不同的块进行匹配;前向与后向多参考帧。
H.264在帧间编码中,一个宏块(16×16)可以被分为16×8、8×16、8×8的块,而8×8的块被称为子宏块,又可以分为8×4、4×8、4×4的块。总体而言,共有7种大小不同的块做运动估计,以找出最匹配的类型。与以往标准的P帧、B帧不同,H.264采用了前向与后向多个参考帧的预测。半象素精度的运动估计比整象素运动估计有效地提高了压缩比,而1/4象素精度的运动估计可带来更好的压缩效果。
编码器中运用多种大小不同的块进行运动估计,可节省15%以上的比特率(相对于16×16的块)。运用1/4象素精度的运动估计,可以节省20%的码率(相对于整象素预测)。多参考帧预测方面,假设为5个参考帧预测,相对于一个参考帧,可降低5%~10%的码率。以上百分比都是统计数据,不同视频因其细节特征与运动情况而有所差异。
熵编码
H.264标准采用的熵编码有两种:一种是基于内容的自适应变长编码(CAVLC)与统一的变长编码(UVLC)结合;另一种是基于内容的自适应二进制算术编码(CABAC)。CAVLC与CABAC根据相临块的情况进行当前块的编码,以达到更好的编码效率。CABAC比CAVLC压缩效率高,但要复杂一些。
去块效应滤波器
H.264标准引入了去块效应滤波器,对块的边界进行滤波,滤波强度与块的编码模式、运动矢量及块的系数有关。去块效应滤波器在提高压缩效率的同时,改善了图像的主观效果。
其他视频编码标准
除上述ITU-T的视频压缩标准外,还有一些标准也比较流行,如MPEG-4、AVS、WM9。
H.264也称为MPEG-4 AVC,而目前业内所说的MPEG-4一般是指SP(简级)或ASP(先进的简级),主要针对低码率应用,如因特网上的流媒体、无线网的视频传输及视频存储等,其核心类似于H.263。
AVS是由我国自主制定的音/视频编码技术标准,主要面向高清晰度电视、高密度光存储媒体等应用。AVS标准以当前国际上最先进的MPEG-4 AVC/H.264框架为基础,强调自主知识产权,同时充分考虑了实现的复杂度。相对于H.264,AVS的主要特点有:(1)8×8的整数变换与64级量化;(2)亮度和色度帧内预测都是以8×8块为单位,亮度块采用5种预测模式,色度块采用4种预测模式;(3)采用16×16、16×8、8×16和8×8 4种块模式进行运动补偿;(4)在1/4象素运动估计方面,采用不同的四抽头滤波器进行半象素插值和1/4象素插值;(5)P帧可以利用最多2帧的前向参考帧,而B帧采用前后各一个参考帧。
Window Meida 9(WM9)是微软公司开发的新一代数字媒体技术。一些测试表明,WM9的视频压缩效率比MPEG-2、MPEG-4 SP及H.263高很多,而与H.264的压缩效率相当。
回复: [技术帖]新一代视频压缩编码标准——H.264/AVC
如果还有什么更好的内容希望大家补充回复: [技术帖]新一代视频压缩编码标准——H.264/AVC
咱就不置顶了 上个色吧..回复: [技术帖]新一代视频压缩编码标准——H.264/AVC
漫游在测试用这个发布新片不过那个测试片是FTP下载,不高兴下了
据说老机器跑起来会很吃力
回复: [技术帖]新一代视频压缩编码标准——H.264/AVC
- -不是很吃力。。。。。。。。。。是非常吃力。。。。。。。。。tab用H264压过。。。。。我测的时候那叫一个痛苦。。。。。。。
回复: [技术帖]新一代视频压缩编码标准——H.264/AVC
漫游在测试用这个发布新片不过那个测试片是FTP下载,不高兴下了
据说老机器跑起来会很吃力
漫游的Starship Operators不就用的这个~
回复: [技术帖]新一代视频压缩编码标准——H.264/AVC
http://www.yesure.com/storm/article.php/292AVC/H.264/AAC 专题 - 软件篇
I) MPEG-4 part 10 AVC /H.264
====================================================
1) AVC 编码器 (Encoder)
目前主要有两个编码: NeroDigital Recode 2 和 x264.
------------------------------------------------------------------------------------------------
a) NeroDigital Recode 2
Nero 招牌下的 NeroDigital Recode 2 包含了相对很成熟的 H.264 Codec, 输出 .mp4. 目前推荐使用 Recode 2 来编码您打算长久保存的视频.
http 下载页面 (Update-Package 2) 或者官方 ftp (NVE*****.exe) : ftp://ftp4.us.nero.com , ftp://ftp6.us.nero.com
安装后, 由于并不是 vfw 编码, 所以需要运行其 Nero Recode, 选择 Recode DVDs andVideosto Nero Digtial. 之后的界面很直接.
------------------------------------------------------------------------------------------------
b) x264
x264 是 GPL 下的开源 AVC 编码, 希望能像 XviD 一样被发扬光大.
i) 您可以下载 源码 自行编译.
其包含 vfw, 下载安装后(右键点击 .inf, 选择安装), 可以在 virtualdub/virtualdubmod/aviutl 和其他各种可以使用 vfw 编码的软件 里使用.暂时不包含 dshow 解码.
ii) Celtic Druid's , Doom9 x264 win32 daily builds, 或者 bob0r's 有频繁更新的 builds.
目前 x264 bvop 还不完善, 正如其名暗示, x264 还在试验阶段, 请暂时仅用于测试.
附带说一下, 注意看看 x264 官方网页的介绍: 引用x264 is a free library for encoding H264/AVC video streams. The code is written by Laurent Aimar, Eric Petit(OS X), Min Chen (vfw/nasm), Justin Clay(vfw), Måns Rullgård and Loren Merritt from scratch. It is released under the terms of the GPL license.
========================================================
2) 播放 (Playback)
成功的播放需要一个 Splitter 将视频/音频/字幕和其他数据流分开 (split); 然后将各自的 数据流送于相应的解码器 (decoder) 进行解码, 输出给播放设备(显示器 /扬声器).
------------------------------------------------------------------------------------------------
a) Splitter
谈到 Splitter 就必须要谈一谈两个 container ---- .mp4 和 .mkv.
i) .mp4 是 MPEG4 AVC 唯 一符合官方标准的 container, 这意味着如果打算在硬件上播放AVC 压 缩的视频,必 须要存放在.mp4 才能被顺利解码.
由于 .mp4 的官方性, 是兼容性的最佳选择(尤其打算在硬件播放器上播放). 电脑上很多播放器早已成功 支持 .mp4, 比如 Media PlayerClassic, BSPlayer, ZoomPlayer .
ii) .mkv 是很优秀的 container, 不多提了大家都知道 ^^. 但是, 正如目前官方最新的MPC 也没支 持包含 AVC 流的 mkvsplitter, mkv 的 兼容性还有待提高.官方 MPC 自带 mkv splitter,但目前无法正确 split 含 有 AVC 的mkv.
播放存放在 mkv 里的 AVC 目前需要 Haali 最新的 Matroska Splitter
安 装的时候会提示需不需要禁止 MPC 自带的 mkv splitter, 我这里即 使选择了也没起到作用, 需要手动禁止 (MPC 里view --- > options ---> filters--->取消SourceFiles 里matroska 的勾.
由于官方 MPC 暂不支持 AVC mkv splitter, 而额外安装 haali 的 splitter 稍显麻烦, 所以推荐使用
a) cynix 小朋友整合了 haali splitter 的 MPC.
或
b) MPlayer
见 c) 播放器 (player)
------------------------------------------------------------------------------------------------------
b) 解码器 (Decoder)
解码器已经出来很多了, Moonlight, VideoLan, 3ivx, Nero, 和极其推荐的 ffmpeg 的 ffdshow.
这里就只给出 ffdshow 咯, 您需要 ffdshow 20050122 及更新的 build.
官方 ffdshow 稳定 build 暂时还不能解码 AVC. 您可以下载最新 cvs 源码自行编译.
------------------------------------------------------------------------------------------------------
c) 播放器 (player)
其 实有了 splitter, dshow decoder, 所有基于 dshow 的播放器都该成功播放, 尽管如此, 这里还是要推荐cynix 编译的 MPC, 或者并不基于 dshow 但 非常出色的的 MPlayer,您可以不必另 外安装splitter,MPlayer 甚至自带AVC 解码^^.
i) Media Player Classic (MPC) - cynix's build.
cynix 同学 的 最新 build 更新了 mkv splitter, 可以不需要安装 haali 的 splitter 了, 非常方便, 推荐使用 ^^, 请前往 cynix 老巢下载 2005-01-26 或之后的 MPC build.
ps. 如果您想得到官方的源码和 build, 请前往 MPC 官方网页 (上面提到, 目前官方的 build 无法自己支持 AVC mkv, 您需要 haali's mkv splitter 才行).
ii) MPlayer
引用 winsen这是 的播放器哦,不用安装 Haali's Matroska splitter 和 支持 avc 的 ffdshow 就可以播放含有 AVC 的 MKV.
II) AAC
AAC 是 Advanced Audio Coding 的缩写, 是 MP1/2 Audio 的下一代有损音频编码, 并且是 MPEG- 4该使用的音频 编码,能完善存放于 .mp4container 中.
==========================================================
I) AAC 编码器
1) FAAC - Free Advanced Audio Coder, 免费的开源 AAC 编码
下载页面: Source (AudioCoding.com) , build (from RareWares) & Fontends: BonkEnc, Besweet & BesweetGUI
2) NeroDigital 也含有相当好的 AAC 编码器.
3) Foobar2000 的 DiskWritter 也包含 AAC 编码.
==========================================================
II) AAC 解码
1) Media Player Classic 自带 AAC 解码, 个人推荐 MPC, 其他很多播放器也应该对 AAC 有支持
2) 也可以尝试另一开源 dshow aac 解码 CoreAAC
下载页面: CVS & build
III) Mux/Demux
各自编码好的 AVC/AAC/字幕 流等需要 mux 进 container 中. 有时也需要将它们 demux 出来. 如果 container 是
a) .mp4
mp4muxer 可以 mux AVC.mp4 和 AAC, 生成. mp4. GUI 默認語 言是德語, 但支持英語, 很handy 的工具.
mp4muxer 是 mpeg4ip 和 mp4box 的 frontend, 所以您需要 mpeg4ip-tools 中的
mp4creator 和 GPAC framework 中的 mp4box. 二者在 mp4muxer 主頁有下載, 或者參見下面附件.
========================================================
b) .mkv
支持 AVC/ACC 的 mux 进 mkv 目前似乎只有mkvtoolnix (1.4 或更新). 其中包含了很多工具, mme 是 mkvmerge 专门负责 mux (merge).
您可能会需要很多 dll, 请下载此頁面中的 mkvtoolnix-runtime.rar
回复: [技术帖]新一代视频压缩编码标准——H.264/AVC
压制的参数怎样设呢?看技术根本是一头雾水~回复: [技术帖]新一代视频压缩编码标准——H.264/AVC
看得糊里糊涂,还是等它标准化了以后再说吧。回复: [技术帖]新一代视频压缩编码标准——H.264/AVC
试了n个解码器还是放不来,有完成度高一点的解码器吗回复: [技术帖]新一代视频压缩编码标准——H.264/AVC
试了n个解码器还是放不来,有完成度高一点的解码器吗解码器建议用ffdshow或者nero来解~具体看我前面的回帖~或者直接用mplayer、vlc或者kmp来放
页:
[1]