H.264/MPEG-4 AVC

影片壓縮標準

H.264,又称为MPEG-4第10部分,高级视频编码(英语:MPEG-4 Part 10, Advanced Video Coding,缩写为MPEG-4 AVC)是一种面向块,基于运动补偿视频编码标准英语Video_coding_format 。到2014年,它已经成为高精度视频录制、压缩和发布的最常用格式之一。第一版标准的最终草案于2003年5月完成。

Advanced Video Coding
通用视听服务的高级视频编码
状态现行
开始年2003年
最新版本2019年6月
组织ITU-T, ISO, IEC
委员会VCEG, MPEG
基础标准H.261,
H.262 (又称 MPEG-2 Video),
H.263,
MPEG-1
有关标准H.265, H.266
领域视频压缩
网站https://www.itu.int/rec/T-REC-H.264

H.264/AVC项目的目的是为了创建一个更佳的视频压缩标准,在更低的比特率的情况下依然能够提供良好视频质量的标准(如,一半或者更少于MPEG-2,H.263,或者MPEG-4 Part2 )。同时,还要不会太大的增加设计的复杂性。H.264的另外一个目标是提供足够的灵活性,以允许该标准能够应用于各种各样的网络和系统的各应用上,包括低和高比特率,低和高分辨率视频,广播,DVD存储,RTP / IP分组网络和ITU-T多媒体电话系统。H.264标准可以被视为由多个不同的应用框架 / 配置文件(profiles)组成的“标准系列”。

H.264/MPEG-4 AVC是一种面向块的基于运动补偿的编解码器标准。由ITU-T视频编码专家组ISO/IEC联合工作组——即动态图像专家组(MPEG)——联合组成的联合视频组(JVT,Joint Video Team)开发。因ITU-T H.264标准和ISO/IEC MPEG-4 AVC标准(正式名称是ISO/IEC 14496-10—MPEG-4第十部分,高级视频编码)有相同的技术内容,故被共同管理。

H.264因其是蓝光盘的其中一种编解码标准而著名,所有蓝光盘播放器都必须能解码H.264。它也被广泛用于网络流媒体数据如VimeoYouTube、以及iTunes Store,网络软件如Adobe Flash PlayerMicrosoft Silverlight,以及各种高清晰度电视地面电视DVB-TDVB-T2)、有线电视(DVB-C)以及卫星(DVB-S和DVB-S2)。

概述

编辑

H.264/AVC项目是想创建一种视频标准。与旧标准相比,它能够在更低带宽下提供优质视频(换言之,只有MPEG-2H.263MPEG-4第2部分的一半带宽或更少),也不增加太多设计复杂度使得无法实现或实现成本过高。另一目的是提供足够的灵活性以在各种应用、网络及系统中使用,包括高、低带宽,高、低视频分辨率,广播,DVD存储,RTP/IP网络,以及ITU-T多媒体电话系统。

H.264标准可以被看作一个“标准家族”,成员有下面描述的各种配置(profile)。一个特定的解码器至少支持一种,但不必支持所有的。解码器标准描述了它可以解码哪些配置。

H.264的命名遵循了ITU-T的命名约定,它是VCEG视频编码标准H.26x线中的一员;MPEG-4 AVC的命名来自ISO/IEC MPEG的命名约定,它是ISO/IEC 14496的第10部分,该协议族被称为MPEG-4。该标准是作为VCEG和MPEG的一部分开发的,此前在ITU-T作为VCEG的项目,叫做H.26L。所以常用于指代此标准的名称有H.264/AVC,AVC/H.264,H.264/MPEG-4 AVC,或MPEG-4/H.264 AVC,以强调共同遗产。有时,也用“JVT编解码”指代它,以指明是JVT(联合开发组)组织开发的。(这种伙伴关系和多命名并不少见。例如,视频编码标准MPEG-2也出现在MPEGITU-T的伙伴关系中,MPEG-2视频在ITU-T社区中称作H.262。[1])一些软件(如VLC media player)内部标识此标准为AVC1。

H.264/AVC标准化的第一个版本于2003年5月完成。在第一个扩展原始标准的项目中,JVT开发了高精度拓展(Fidelity Range Extensions,FRExt)。该拓展通过支持更高的像素精度(包括10比特和12位像素精度)和支持更高的色度抽样率(包括YUV 4:2:2和YUV 4:4:4)来支持更高精度的视频编码。该拓展加入了一些新的特性(比如自适应的4x4和8x8的整数变换,用户自定义量化加权矩阵,高效的帧间无损编码,支持新增的色度空间和色度参差变换)。该拓展的设计于2004年7月完成,草案也于2004年9月完成。

对标准进一步的最新扩展包括:增加五个新的配置,主要用于专业应用;增加扩展全范围(extended-gamut)色彩空间的支持;定义附加长宽比标识;定义“补充增强信息”的两个附加类型(滤波后提示和色调映射);以及废弃一个根据产业反馈应该另行设计的早期FRExt配置。

接着加入标准的主要特性是可适应视频编码(Scalable Video Coding,SVC)。据H.264/AVC附件G,SVC允许码流结构中包含遵循标准的子码流,这种称作“基础层”的码流要能够为不支持SVC的H.264/AVC编解码器所解码。为达成在时间上的可适应性,在推导子码流时,从码流中移除了完整访问单元(complete access unit)。这种情况下,要按相应方式来构造码流中的高层语法和帧间预测参考帧。另一方面,为达成空间和质量的可适应性(换言之,低分辨率/低质量作为子码流而不是主码流),推导子码流时移除了NAL(网络抽象层)。这种情况下,层间预测(暨,从低分辨率/低质量信号数据中预测高分辨率/高质量信号)常被用于提高编码效率。可适应视频编码扩展于2007年11月完成。

下一个加入标准的主要特性是多视图编码(Multiview Video Coding,MVC)。据H.264/AVC附件H,MVC使得码流结构可以表达一个视频场景的不止一个视图。该功能的一个重要例子是3D立体视频编码。MVC的工作中开发了两个配置:多视图高配置(Multiview High Profile)支持任意数量的视图,立体高配置(Stereo High Profile)是为双视图立体视频特别设计的。多视图编码扩展于2009年11月完成。

技术细节

编辑

H.264/AVC包含了一系列新的特征,使得它比起以前的编解码器不但能够更有效的进行编码,还能在各种网络环境下的应用中使用。这些新特性包括:

  • 多参考帧的运动补偿。比起以前的视频编码标准,H.264/AVC以更灵活的方式使用已编码的更多帧来作为参考帧。在某些情况下,可以使用最多32个参考帧(在以前的标准里面,参考帧的数目不是1就是对B帧来说的2)。该特性对大多数场景序列都可以带来一定的码率降低或者质量提高,对某些类型的场景序列,例如快速重复的闪光,反复的剪切或者背景遮挡的情况,它能很显著的降低编码的码率。
  • 变块尺寸运动补偿。可使用最大16x16至最小4x4的块来进行运动估计与运动补偿,能够对图像序列中的运动区域进行更精确的分割。这些类型共有16×16、16×8、8×16、8×8、8×4、4×8、4×4
  • 为了减少混叠(Aliasing)并得到更锐化的图像,采用六抽头的滤波器(六阶数字滤波器)来产生二分之一像素的亮度分量预测值。
  • 灵活的隔行扫描视频编码(interlaced-scan video coding)。隔行扫描图像的每帧包括两个场,所以对于隔行扫描图像有三种编码方式:1、将两场合并为一帧进行编码;2、将两场分别编码;3、将两场合并为一帧,但是在宏块级别上,将一个帧宏块划分为两个场宏块进行编码。以上前两种编码方式称为图像自适应帧/场编码(Picture-adaptive frame-field, PicAFF or PAFF),第三种称为宏块自适应帧/场编码(Macroblock-adaptive frame-field, MBAFF)。[2]
    • PAFF:对于一个运动图像,由于场之间存在着较大的扫描间隔,所以帧中相邻两行之间的空间相关性相对于逐行扫描图像较小,因此对两个场分别编码会更节省码流。对于一个非运动图像,相邻两行之间存在较大的空间相关性,将两场合并为一帧编码更有效。所以PAFF编码方式可以针对整个图像的编码方式做自适应调整,选择帧编码或场编码。
    • MBAFF:当图像同时存在运动区域和非运动区域时,PAFF的劣势便显现出来,PAFF的自适应粒度太粗,无法实现满足更加精细的编码要求,于是MBAFF应运而生。MBAFF对帧编码或场编码的选择是基于宏块的,MBAFF将两场合并为一帧进行编码,但将每一个帧宏块(16x16)划分为场宏块对(8x16),针对每一个帧宏块,比较帧编码和场编码产生的码流大小,使用最节省码流的方式。
  • 1/4像素精度的运动补偿能够提供更高精度的运动块预测,由于色度通常是亮度抽样的1/2(参见4:2:0),这时运动补偿的精度就达到了1/8像素精度。
  • 加权的运动预测,指在运动补偿时可以使用增加权重和偏移的办法。它能在一些特殊的场合,如淡入、淡出、淡出而后淡入等情况提供相当大的编码增益。
  • 使用了一个Loop的除块效应滤波器,能够减轻普遍存在于其他基于离散余弦变换DCT)的视频编解码器的块效应。
  • 一个匹配的整数4x4变换(类似于离散余弦变换的设计),同样在高精度拓展中,采用整数8x8变换,并能在4x4变换和8x8变换中进行自适应的选择。
  • 在第一次4x4变换后,对DC系数(色度的DC系数和某种特殊状况的亮度DC系数)再进行一次Hadamard变换,使得在平滑区域得到更好的压缩效果。
  • 利用临近块的边界像素的Intra空间预测(比曾在MPEG-2视频部分使用的直流系数预测和在H.263+MPEG-4视频部分使用的变换系数预测的效果要好)。
  • 基于上下文的二元算数编码(CABAC),它能够灵活的将各种语法元素,在已知相应上下文概率分布的状况下进行更有效的无损熵编码。“通过序列foreman和coastguard对CABAC和CAVLC的压缩性能进行了比较,在给定的实验条件下得出CABAC的比特率比CAVLC节省5%~14%,并且随量化步长的增大,比特率节省增多。但是CABAC计算复杂度高,耗时比CAVLC长。”[3]
  • 基于上下文的变长编码(CAVLC),用于对量化后的变化系数进行编码。比起CABAC它的复杂度相对较低,压缩比不高,但是比起以前的视频编码标准所使用的熵编码方案,它又是相当有效的。CAVLC支持所有的H.264 profiles, CABAC则不支持Baseline以及Extended profiles.
  • 对既不是用CABAC也不是用CAVLC的语法元素,使用指数哥伦布码(Exponential-Golomb,Exp-Golomb)熵编码方案,进行编码。
  • 使用一个网络抽像层(NAL),使得相同的视频语法可以适用于多种网络环境中;并且使用了序列参数集(SPSs)和图像参数集(PPSs)来提供更高的强健性(robustness)和灵活性。
  • 切换切片(Switching slices,包括SP和SI两种),它使得编码器能够指令解码器跳转到一个正在处理的视频码流,用来解决视频码流码率切换和"窍门模式"(Trick mode)操作。当解码器利用SP/SI切片跳转到一个视频码流中间时,除非之后的解码帧引用切换帧之前的图像作为参考帧,它都可以得到完全一致的解码重建图像。
  • 灵活的宏块排列模式(FMO for Flexible macroblock ordering,也被称为切片组slice groups技术)和任意切片排列(ASO for arbitrary slice ordering)模式,用来更改图像编码的最基本单位-宏块的编码顺序。它能够用来提高有绕信道下码流的强韧性(robustness)以及一些其它的目的。
  • 数据分区(DP for Data partitioning),能够将重要程度不同的语法元素分开打包传输,并使用非平等数据保护(UEP for unequal error protection)等技术来改善视频码流对抗信道误码/丢包的强韧性(Robustness)。
  • 冗余切片(RS for Redundant Slices),同样是一个提高码流稳健性的技术。编码器利用该技术可以发送图像某区域(或者全部)的另一个编码表示(通常是较低分辨率的编码码流)使得当主表示发生错误或者丢失的时候能够用冗余的第二个编码表示来解码。
  • 使用了一个自动的字节码流打包方法,避免了码流中出现与开始码重复的码字。开始码是码流中用于随机访问和重建同步的码字。
  • 补充增强信息(SEI for Supplemental Enhancement Information)和视频可用信息(VUI for Video Usability Information)增加了向视频码流中加入信息的办法,为各种应用提供了用途。
  • 辅助图层(Auxiliary pictures),可以用来实现某些特殊的功能,例如alpha复合(alpha compositing)。
  • 帧编号,使用该功能支持创建一个视频序列的子序列,可用来支持实现时域的可伸缩性,还支持对丢失的整帧图像进行检测和隐藏(丢失可能是由于网络丢包或者信道误码造成的)。
  • 图像顺序计数,使用该功能使得各帧图像的顺序和解码图像的像素值与时间信息无关,即使用一个单独的系统对时间信息进行传输、控制、更改,从而不影响解码图像的像素值。

上述这些技术,与其它技术的结合,使得H.264比起以前的视频编解码能够带来性能上显著的提高,并在各种不同的环境下达成更广泛的应用。H.264在压缩性能上比起MPEG-2有很大的提高,在相同的图像质量下可以,码率可以减少到一半或者更少。

和MPEG的其它视频标准一样,H.264/AVC也提供了一个参考软件,并可以免费下载。它的主要目的是提供一个演示H.264/AVC各种功能的演示平台,而不是作为一个直接的应用平台。目前在MPEG也同时在进行一些硬件参考设计的实现。

专利许可

编辑

MPEG-2第一部分、第二部分,MPEG-4第二部分一样,使用H.264/AVC的产品制造商和服务提供商需要向他们的产品所使用的专利的持有者支付专利许可费用。这些专利许可的主要来源是一家称为MPEG-LA LLC的私有组织,该组织和MPEG标准化组织没有任何关系,但是该组织也管理著MPEG-2第一部分系统、第二部分视频、MPEG-4第二部分视频和其它一些技术的专利许可。

其他的专利许可则需要向另一家称为VIA Licensing的私有组织申请,这家公司另外也管理偏向音频压缩的标准如MPEG-2 AAC及MPEG-4 Audio的专利许可。

应用

编辑

光盘存储

编辑

当时竞争的两种下一代光盘格式技术,都已经计划在2005年下半年,将H.264/MPEG-4 AVC作为必需的编码格式,包括:

数字电视

编辑

欧洲与北美洲地区

编辑

欧洲的数字电视广播(DVB)标准组织,于2004年下半年通过了采用H.264/MPEG-4 AVC于欧洲地区进行数字电视广播,而法国总理让-皮埃尔·拉法兰于2004年宣布法国将会选用H.264/MPEG-4 AVC作为高清电视接收器和数字电视地面广播服务的付费电视频道的一项要求。

另外,美国正在考虑使用H.264/MPEG-4 AVC,作为数字电视地面广播的视频编码规格。

亚洲地区

编辑

至于亚洲地区,日本所采用的ISDB数字电视广播制式,提供的ISDB移动电视广播服务,使用了H.264/MPEG-4 AVC编码,而其中包括了以下的电视台:

台湾DVB-T数字电视广播格式进行高清晰度数字地面电视频道,自2020年10月12日起,均采用H.264/MPEG-4 AVC作为视频编码格式。

香港无线电视港台电视香港电视娱乐的所有频道都使用H.264/MPEG-4 AVC作为编码制式。[4]

澳门方面,澳广视的所有自家及转播频道均采用H.264作为视频编码格式。

韩国也正在考虑改使用H.264/MPEG-4 AVC,作为数字电视地面广播的视频编码规格。

卫星数字电视

编辑

卫星数字电视广播方面,以下数间服务供应商亦采用了该编码标准,包括:

网络电视

编辑

南京电信在南京推广的IPTV业务由于受带宽限制,将原有4M左右码流的MPEG-2格式的标清卫星节目用H.264重新编码约为2.23M码流的节目播放。

通信与多媒体

编辑

第三代移动通信合作组织(3GPP)已经在第六次发布中批准H.264/AVC作为其移动多媒体电话服务标准的可选技术。

美国国防部下的运动图像标准协会(MISB for The Motion Imagery Standards Board)已经接受H.264/AVC为其核心应用的推荐视频编解码器。

互联网工程工作小组(IETF)已经完成了一个负载打包格式(RFC 3984)作为在其实时传输协议(RTP)上传输H.264/AVC码流的打包办法。

互联网流媒体协会(ISMA for Internet Streaming Media Alliance英语Internet Streaming Media Alliance)已经接受H.264/AVC作为其ISMA 2.0的技术规范。

MPEG组织将H.264/AVC完全的集成进入了它的系统协议(例如MPEG-2MPEG-4系统)和ISO媒体格式协议。

国际电信联盟ITU-T标准组已经采纳H.264/AVC作为其H.32x系列的多媒体电话系统的系统规范的一部分。ITU-T的采纳,使得H264/AVC已经被广泛的使用在视频会议系统中,并获得了视频电话主要的两家产品提供商(Polycom和Tandberg的支持。实际上所有新的视频会议产品都支持H.264/AVC。

H.264将很可能被各种视频点播服务(Video-On-Demand,VOD)使用,用来在互联网上提供电影电视节目直接到个人电脑的点播服务。

产品和实现

编辑

有几家公司正在制作能够对H.264/AVC视频进行解码的可编程芯片。2005年1月博通(Broadcom)的BCM7411、科胜讯公司(Conexant)的CX2418X、Neomagic的MiMagic 6和意法半导体(STMicroelectronics)的STB7100等几家公司推出的产品都提供了可供测试的样片。Sigma Designs预计在2005年3月提供样片。这些芯片的出现将极大的推动低成本的能够播放标清高清分辨率的H.264/AVC视频的快速推广。除了Neomagic的芯片是针对低能耗应用以外,其他四种芯片都具有播放高清分辨率视频的能力,而且大部分都将支持标准中的High Profile。

苹果公司已经将H.264集成进入Mac OS X版本v10.4(昵称Tiger),并于2005年5月发布了支持H.264的QuickTime版本7.0。2005年4月苹果公司升级了软件DVD Studio Pro以支持授权的高清格式的内容。该软件支持将HD-DVD格式的内容刻录到标准DVD或者HD-DVD媒体上。为了播放刻录在标准DVD上的HD-DVD内容,所需要的硬件是PowerPC G5、软件是Apple DVD Player v4.6,以及Mac OS X v10.4或者更新版本。

Envivio公司已经可以提供针对H.264组播用的标清实时编码器和离线的高清(720p、1080i、1080p)编码器。Envivio公司同时提供针对windowsLinuxMacintosh平台的H.264解码器,H.264视频服务器和授权工具。

Modulus Video公司提供广播、电话用广播质量的H.264标清实时编码器,并宣布将与2005年中提供高清实时编码器(ME6000)。该公司曾在2004年4月在NAB上演示过高清实时编码器,并获得"Pick Hit"奖项。该公司使用LSI Logic的技术。

Tandberg television公司推出了EN5990实时编码器。DirecTV和BSkyB已经把EN5990编码器用于它们的卫星直播服务(DBS)。

哈雷(Harmonic)也推出了型号DiviCom MV 100的实时编码器,。法国的广播商TF1和Video Networks Limited(VNL)在伦敦的家用视频点播服务已经宣布使用该产品。佩斯公司(Pace Micro)为一些主要的直播卫星公司提供了机顶盒。

Sony公司的PSP在硬件上提供对H.264 Main Profile Level 3解码的支持。

Nero Digital公司推出的由Nero AGAteme共同开发的软件包提供了对H.264编码的支持,并在Doom9获得"Pick Hit"[1] 奖项。

Sorenson提供了H.264实现方式。相关的编解码软件Sorenson AVC Pro codec已经包含在Sorenson Squeeze 4.1 for MPEG-4中。

自由软件版x264的编解码软件采用GPL授权方式下载。

InterVideo的WinDVD 7于2005年6月24日正式发布。发布版本分为WinDVD 7 Gold黄金版和WinDVD 7 Platinum白金版,白金版支持H.264/MPEG-4 AVC解码播放,推荐配置为P4 3.6G。(不属于原文)

ATI于2005年10月5日发布的Radeon X1300、X1600、X1800系列图形芯片支持H.264硬件加速解码。

Matrox公司推出的Matrox Mxo2 mini with MAX产品提供了H.264加速运算的功能,可以更快的输出文件。

设计

编辑
最大性能级别[5]
Level 最大解码速度 最大幀率 最大视频编码层比特率[a] 高清晰度@ 最高幀率
切换详细信息
Luma samples/s Macroblocks/s 明亮度 宏区块
1 380,160 1,485 25,344 99 64
128×96@30
176×144@15
1b 380,160 1,485 25,344 99 128
128×96@30
176×144@15
1.1 768,000 3,000 101,376 396 192
128x96@60
176×144@30
352×288@7.5
1.2 1,536,000 6,000 101,376 396 384
128x96@120
176×144@60
352×288@15
1.3 3,041,280 11,880 101,376 396 768
128x96@172
176×144@120
352×288@30
2 3,041,280 11,880 101,376 396 2,000
128x96@172
176x144@120
352×288@30
2.1 5,068,800 19,800 202,752 792 4,000
176x144@172
352×240@60
352×288@50
352×480@30
352×576@25
2.2 5,184,000 20,250 414,720 1,620 4,000
176×144@172
352×480@30
352×576@25
720×480@15
720×576@12.5
3 10,368,000 40,500 414,720 1,620 10,000
176×144@172
352×240@120
352×480@60
720×480@30
720×576@25
3.1 27,648,000 108,000 921,600 3,600 14,000
352x288@172
352x576@130
640x480@90
720×576@60
1,280×720@30
3.2 55,296,000 216,000 1,310,720 5,120 20,000
640x480@172
720x480@160
720x576@130
1,280×720@60
4 62,914,560 245,760 2,097,152 8,192 20,000
720x480@172
720x576@150
1,280×720@60
2,048×1,024@30
4.1 62,914,560 245,760 2,097,152 8,192 50,000
720x480@172
720x576@150
1,280×720@60
2,048×1,024@30
4.2 133,693,440 522,240 2,228,224 8,704 50,000
720x576@172
1,280×720@140
2,048×1,080@60
5 150,994,944 589,824 5,652,480 22,080 135,000
1,024×768@172
1,280×720@160
2,048×1,080@60
2,560×1,920@30
3,680×1,536@25
5.1 251,658,240 983,040 9,437,184 36,864 240,000
1,280×720@172
1,920×1,080@120
2,048×1,536@80
4,096×2,048@30
5.2 530,841,600 2,073,600 9,437,184 36,864 240,000
1,920×1,080@172
2,048×1,536@160
4,096×2,160@60
6 1,069,547,520 4,177,920 35,651,584 139,264 240,000
2,048×1,536@300
4,096×2,160@120
8,192×4,320@30
6.1 2,139,095,040 8,355,840 35,651,584 139,264 480,000
2,048×1,536@300
4,096×2,160@240
8,192×4,320@60
6.2 4,278,190,080 16,711,680 36,651,584 139,264 800,000
4,096*2,304@300
8,192×4,320@120

The maximum bit rate for High Profile is 1.25 times that of the Base/Extended/Main Profiles, 3 times for Hi10P, and 4 times for Hi422P/Hi444PP.

The number of luma samples is 16x16=256 times the number of macroblocks (and the number of luma samples per second is 256 times the number of macroblocks per second).

注释

编辑
  1. ^ (Video Coding Layer)
    kbit/s (Baseline, Extended and Main Profiles)

参考资料

编辑
  1. ^ H.262 : Information technology —Generic coding of moving pictures and associated audio information: Video. [2007-04-15]. (原始内容存档于2015-10-17). 
  2. ^ 视频编码中的PAFF和MBAFF的区别. [2014-01-19]. (原始内容存档于2015-09-22). 
  3. ^ 比较CABAC与CAVLC. [2014-01-19]. (原始内容存档于2016-03-05). 
  4. ^ 工商及科技局,《立法会参考资料摘要:推行地面数字电视广播[失效链接]》,页5,2006年6月4日
  5. ^ Advanced video coding for generic audiovisual services. ITU-T TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU. : 324 [2018-03-05]. (原始内容存档于2017-09-14). Recommendation ITU-T H.264 

外部链接

编辑