1. 编码标准之战
想预测未来,就回顾历史。先来看看H.264这些编码的从标准化到现在普及的过程。人们一直在想尽办法提高视频编码的效率,让它在尽可能小的体积内提供最好的画面质量,从而满足人们对于视频传输、存储的需求。长期以来,视频编码标准主要由两个国际组织负责制定:国际电信联盟ITU-T和国际标准化组织ISO。目前影响力最强的视频编码标准基本均出自这两个组织.
国际电信联盟ITU-T制定的标准有H.261、H.263、H.263+、H.264等。“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-4等。
除了上述两个组织之外,其他比较有影响力的标准还有:
- Google:VP8/VP9;
- Microsoft : VC-1;
- 国产自主标准:AVS/AVS+/AVS2
ITU-T的视频编码专家组名称为:Video Coding Expert Group, VCEG。该专家组所建立的标准属于ITU-T H系列建议书中视听及多媒体系统的一个组成部分,该组成部分的名称为活动图像编码(Coding of moving video),编号范围为H.260 – H.279,目前已在进行H.266标准的建立。
ISO/IEC的视频编码专家组名称为:Moving Pictures Experts Group,MPEG。该专家组所建立的标准命名为MEPG-x系列。如MEPEG-1 MEPG-2 MPEG4。MPEG4也即是我们常见的MP4
ITU-T和ISO/IEC一开始都是各干各的,推出自己的标准,中间也和作过一次推出H.262/MPEG-2,然而可能是市场反响不是很好,因此又各干各的推出另一个标准,后来再次联合推出了H.264/AVC获得巨大的成功,目前互联网上的视频编码基本清一色的是H.264/AVC。
看一下这些比较重要的国际组织
国际标准组织
这里说一下,H264编码完整的名称是H.264/MPEG-4 AVC。其中,H.264是ITU-T组织体系的命名,后面MPEG-4 AVC(MPEG-4 Part 10, Advanced Video Coding)是ISO-IEC组织给他的命名,因为这个标准是由 ITU-T 和 ISO-IEC 联合发布的。可以想象两个打了10多年架的组织,联合起来做事,在这个名字上面肯定妥协不了,所以取一个联合的名字。就像微积分又叫叫牛顿莱布尼茨公式一样。
所以,很多网上说AVC,这里就是指的H264。代码里面用的比较多的也是AVC,我们知道他的全称叫H.264/MPEG-4 AVC
就可以了。另外,H.265编码 即,High Efficiency Video Coding,简称HEVC,又称为H.265和MPEG-H Part 2。也是由 ITU-T 和 ISO-IEC 联合发布的。我们看到的文章或者代码中经常以hevc出现。
2. 编码标准发展历程
视频编码发展经历的漫长的时间。我们看下各个阶段视频编码的产出和对应的组织关系。
视频发展历程
注意:H.264,H.265只是针对视频信息进行编码,里面是不包含音频的,将一个视频和一个音频合并为一个常见视频的过程称之为merge。
各大视频网站的基本均是在使用H.264对视频编码,其原因在于H.265的专利费是H.264的8倍左右,商业么,当然首先考虑成本问题,此外H.265的算法复杂度也相较于H.264有所提升,因此需要终端更多的解码算力,间接提高了终端的成本。(主要还是因为钱的原因嘛,你懂的!)
我们看下主要的编码的发展历程
2.1 H.261:引入各种特性,奠定现代视频编码基础(1988)
视频压缩编码发展的第一个里程碑。因为从H.261开始,视频编码方法采用了沿用至今的基于波形的混合编码方法。H.261标准主要目标是用于视频会议和可视电话等高实时性、低码率的视频图像传输场合。
在针对图像的压缩算法上,H.261使用了我们现在比较熟悉的离散余弦变换(DCT)算法, 它在后来的JPEG编码中起主要作用。但不止于此,它引入了一系列针对视频的特性,奠定了现代视频编码的基础,其中主要有宏块(Macroblock)和基于宏块的运动补偿(Motion Compensation)。
H.261设计的目标是编码出比特率在64~2048kbps范围内的视频,以用于实时的视频电话等应用。它首次确立了帧内预测与帧间预测同时使用的编码框架,在消除每一帧本身存有的冗余外,消除了帧与帧之间的冗余信息,从而大幅度降低了码率,成为了实际可用性相当高的一种视频编码。而它的编码框架也影响到了之后几乎所有的视频编码,尤其是H.26x和MPEG家族。
2.2 MPEG-1 Part 2:引入帧类型概念,成为VCD标准(1991)
MPEG-1即俗称的VCD。MPEG是ISO/IEC JTC1 1988年成立的运动图像专家组(Moving Picture Expert Group)的简称,负责数字视频、音频和其他媒体的压缩、解压缩、处理和表示等国际技术标准的制定工作。MPEG-1制定于1992年11月份,它是将视频数据压缩成1~2Mb/s的标准数据流。它受到H.261的深刻影响,继承和发展了分块、运动补偿、DCT算法等思想,并做出了自己的改进,比如引入新的双向预测帧、亚像素精度的运动补偿等新技术。
对于清晰度为352×288的彩色画面,采用25帧/秒,压缩比为50:1时,实时录像一个小时,经计算可知需存储空间为600MB左右,若是8路图像以每天录像10小时,每月30天算,则要求硬盘存储容量为1440GB,则显然是不能被接受的。
特性:对动作不激烈的视频信号可获得较好的图像质量,但当动作激烈时,图像就会产生马赛克现象。它没有定义用于额外数据流进行编对码的格式,因此这种技术不能广泛推广。它主要用于家用VCD,在世界范围,尤其是在我国风行十余年。它需要的存储空间比较大。
优点:对动作不激烈的视频信号可获得较好的图像质量。
缺点:当动作激烈时,图像就会产生马赛克现象。它没有定义用于额外数据流进行编对码的格式,因此这种技术不能广泛推广。
2.3 MPEG-2 Part 2/H.262:DVD与(前)数字电视标准(1994)
1994年推出的MPEG-2中标准化了一种新的视频编码,它在1995年被ITU-T接纳为H.262,在这里我们简单称它为MPEG-2。相对于1993年推出的MPEG-1,它并没有太大的改动,主要是针对DVD应用和数字时代进行了改良。MPEG-2在制定时充分考虑到了数字电视系统的需求,加入了对隔行扫描的支持。MPEG-2技术也应用在了HDTV传输系统和蓝光光盘中。
MPEG-2虽然没有加入太多新的特性,在压缩率方面实际没有太大的提升,但由于它被选中成为DVD-Video、数字电视、DV等等一系列应用的标准编码,顺利地成为了世界范围内通行的视频编码格式,时至今日,它仍然被大量地应用在数字电视等系统中。
2.4 H.263:FLV与3GP的好搭档
ITU-T在1995年推出了H.261的直接继承者——H.263。
FLV中codecid2和大部份的3GP文件中用到的都是基于H263的编码但是两者 还是有很大不同,所以要引起注意。主要有三个地方不同,做解码的时候一定要注意,3GP文件中基于H263的视频编码是按照公开的H263技术白皮书实现 的,但是FLV中H263的编码确在标准之上做了些小小的改动。
H.263 是最早用于低码率视频编码的ITU-T 标准,是ITU-T 为低于64kb/s 的窄带通信信道制定的视频编码标准。它是在H.261 基础上发展起来的,其标准输入图像格式可以是S-QCIF、QCIF、CIF、4CIF 或者16CIF 的彩色4∶2∶0 亚取样图像。H.263 与H.261 相比采用了半象素的运动补偿,并增加了4 种有效的压缩编码模式。随后出现的第二版(H.263+)及H.263++增加了许多选项,使其具有更广泛的适用性。
H.263在互联网和通信业中得到了广泛的应用,它一度活跃在各种视频网站上面,和Flash播放器一起撑起了互联网在线视频的一片天,而在通信业中,被3GPP组织采纳成为多种通信标准中的标准视频编码,比如说MMS——也就是彩信。
2.5 MPEG-4 Part 2:特性很多,实现很多
在MPEG-2之后,MPEG组织有了新的目标——开发一套压缩率更高的编码框架,但同时保留对低复杂性的支持。1998年,MPEG-4标准正式诞生,其中第二部分定义了一套新的视觉编码体系,是的,它并不是仅仅针对于视频应用,而是广泛意义上的视觉(Visual),故也被称为MPEG-4 “Visual”。
它的核心设计实际上与H.263趋同,但是包含了更多关于编码效率的增强。它定义了复杂度不同的多种Profile,从最基本的Simple Profile到非常复杂的Simple Studio Profile,前者不支持B帧,而后者甚至支持到4K分辨率和12-bit、4:4:4采样的编码。
尽管MPEG-4 Visual是一个野心勃勃的编码,但它遭到了业界的冷待和批评。一个是它的压缩率相比起MPEG-2并没有重大提升,而因为授权和专利费用问题,很多厂商选择自己去实现一套兼容MP EG-4 Visual的编码,而不是直接采用标准,这其中就有经典的DivX和Xvid两兄弟,微软也拿它作为Windows Media Video的基础,一点点升级到WMV9。
2.6 其他编码 RealMedia WMV
(1)RealMedia
对于国人来说,RealMedia绝对是一个带有情怀的词语。他们家的RM系列编码在十多年前在国内网络上曾有相当的覆盖度。RealMedia最为人称道的战绩就是挤垮了一大堆租碟店,它以十分一的体积做到了接近DVD MPEG-2的画质。
但是有一些问题编码慢,解码困难,体积大,而且RealMedia编码器为商业用途,并不开源和免费使用。RM最大的问题还是支持范围不广,在浏览器中播放RM需要插件,基于Flash播放器的视频网站的兴起也让它的用途逐渐变得狭隘,最终在正版H.264的冲击下,RM慢慢的销声匿迹了。
(2)WMV
WMV(Windows Media Video)是微软推出的一种流媒体格式,它是在“同门”的ASF(Advanced Stream Format)格式升级延伸来得。在同等视频质量下,WMV格式的文件可以边下载边播放,因此很适合在网上播放和传输。
WMV(Windows Media Video)不仅仅基于微软公司的自有技术开发的。从第七版(WMV1)开始,微软公司开始使用它自己非标准MPEG-4Part2。但是,由于WMV第九版已经是SMPTE的一个独立标准(421M,也称为VC-1),所以WMV的发展已经不象MPEG-4,它是一个它自己专有的编解码技术。VC-1专利共享的企业有16家(2006年4月),微软公司也是MPEG-4AVC/H.264专利共享企业中的一家。
微软的WMV还是很有影响力的。可是由于微软本身的局限性其WMV的应用发展并不顺利。
1)WMV是微软的产品它必定要依赖着Windows,Windows意味着解码部分也要有PC,起码要有PC机的主板。这就增加了机顶盒的造价,从而影响了视频广播点播的普及。
2)WMV技术的视频传输延迟较大。
WMV-HD,基于WMV9标准,是微软开发的视频压缩技术系列中的其中一个版本,一般采用.wmv为后缀的HDTV文件就是采用的WMV-HD压缩的。VC-1从压缩比上来看,H.264的压缩比率更高一些,VC-1的熵编码采用的是自适应变长编码。
2.7 AVC/H.264:集大成者一统江湖
H.264/MPEG-4 AVC的成功的原因之一是在于是两个标准化组织的合作或者是妥协的结果。
H.264 是由ISO/IEC 与ITU-T 组成的联合视频组(JVT)制定的新一代视频压缩编码标准。1996 年制定H.263标准后,ITU-T 的视频编码专家组(VCEG)开始了两个方面的研究:一个是短期研究计划,在H.263 基础上增加选项(之后产生了H.263+与H.263++);另一个是长期研究计划,制定一种新标准以支持低码率的视频通信。长期研究计划产生了 H.26L 标准草案,其目标是研制出新的压缩标准,与以前的任何标准相比,效率要提高一倍,同时具有简单、直观的视频编码技术,网络友好的视频描述,适合交互和非交互式应用(广播、存储、流煤体)。
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标准。该标准在2003 年3 月正式获得批准。
他的特点是高压缩比、高图像质量、良好的网络适应性,在较低带宽上提供高质量的图像传输。 其采用了更灵活的宏块划分方法、数量更多的参考帧、更先进的帧内预测和压缩比更高的数据压缩算法。
2.8 VC-1:失败的挑战者
VC-1,全名VC-1视讯编解码器(Video Codec 1),是微软所开发的视频编解码系统。2003年提出标准化申请,最早名字是VC-9。2006年4月正式通过成为标准。 微软是在2003年9月递交VC-1编码格式(开发代号Corona)的,VC-1基于微软Windows Media Video 9(WMV9)格式,而WMV9格式现在已经成为VC-1标准的实际执行部分。直到2006年初,活动图像和电视工程师协会(SMPTE)才正式颁布了由微软提出并开发的VC-1视频编码标准,VC-1被颁布为标准后,SMPTE仍会收取授权费,微软则可从专利中获取一定的版税。
进入高清时代后,微软也顺应潮流,为WMV9进行了升级,加入了针对高清视频的新特性,让它能够胜任1080p级别的高清视频,新的编码即为VC-1。与H.264相比,VC-1总体的复杂程度要低一些,也因此在软解上对CPU更加友好。实际上VC-1也通过了国际组织SMPTE的标准化。
VC-1与HD DVD有一定的捆绑关系,在蓝光大战初期也通过这种方式得到了一定的推广。然而,随着HD DVD阵营的认输,VC-1也随之销声匿迹,很难再看到了。
2.9 HEVC/H.265/MPEG-H Part 2:视频编码王位继任者
H.264很强大,但是它在超清时代有点不够用了。随着视频分辨率的跨越式提升,H.264表现出了疲态,它在应对4K视频时已经没有办法提供很好的压缩比了。很明显,人们需要新的编码来继承它的位置,而它的直接继承者——HEVC,在经过多年研究之后,终于在2013年被通过了。
HEVC,全称高效视频编码(High Efficiency Video Coding),同样的,它也是由MPEG和ITU-T联合制定的国际标准编码。被包含在MPEG-H规范中,是为第二部分(Part 2),在ITU-T那儿,它是H.26x家族的新成员,为H.265。
HEVC主要是针对高清及超清分辨率视频而开发的,相比起前代AVC,它在低码率时拥有更好的画质表现,同时在面对高分辨率视频时,也能提供超高的压缩比,帮助4K视频塞入蓝光光盘。
相较于AVC,HEVC在高分辨率下的编码效率又有非常大的提升,举个实例,同样一段4K视频,使用H.264编码的大小可能会比使用HEVC大出个一倍。这种巨大的进步幅度也使得Blu-ray直接用它作为标准编码,推出了UHD BD,而它在单帧图像压缩上面的改进也让它拥有胜过JPEG的能力,于是我们看到在移动端,越来越多的设备选择将其作为默认的视频、照片输出编码。
但是相比起AVC,HEVC的推广速度慢了很多,一个是它的编解码难度比H.264高了太多,但这点通过各路硬件编码器和软件优化逐渐化解掉了,目前常见的设备基本上支持HEVC的硬件编解码;第二个就是HEVC高昂的专利费用问题,它并不是一个免费的编码格式,虽然个人使用它完全没有问题,但对于想要兼容它的厂商来说,这笔高昂的专利费用足以让他们却步,尤其是崇尚自由开放的互联网市场。于是,我们看到众多厂商选择了免费开放的VPx系列编码,以及系列的后继者——AV1。
2.10 VPx系列与AV1:以免费为卖点
VPx系列编码实际上已经有很长的历史了。它的前身是On2 Technologies公司的TrueMotion系列视频编码,在开发TrueMotion VP8编码时,公司被Google收购了。在Google的介入下,VP8从原本的专有技术变成了开放技术,在BSD许可证下面进行开源。
从技术角度来说,VP8采用的技术是类似于H.264的。虽然在我们看到的宣传中,VP8拥有比H.264更佳的压缩效率,但在实际应用中,由于它在设计上有一定的瑕疵,表现并不如H.264,最终它虽然进入了Web标准,但也没见有人用它,反而是由它的帧内压缩技术提取而成的WebP受到了欢迎。
VP8的表现并不理想,Google很快就推出了它的继任者——VP9。这次,他们参考的是HEVC,设计目标同样是高分辨率下的高效编码。VP9中的一些设计是受到了HEVC的影响的,比如说同样最大为64x64的超级块(Super Block)。最终VP9达成的结果是提供了比VP8高达50%的效率提升。看起来它能够和HEVC比肩了,但是它也遇到了和VP8相似的问题,推广不开。VP9的应用范围实际也局限在Google自家的Youtube中,只能说是缺少实际应用场景。
但很快,一些厂商认识到HEVC高昂专利费用带来的弊端,他们决定创立一个开放联盟,推广开放、免费的媒体编码标准。这个联盟就是开放媒体联盟(Alliance for Open Media),创始成员有Amazon、Cisco、Google、Intel、Microsoft、Mozilla和Netflix这些我们熟悉的大公司,而后加入的还有苹果、ARM、三星、NVIDIA、AMD这些同样耳熟能详的公司。
Google将他们还在开发中的VP10贡献了出来作为联盟新编码的基础,很快,名为AV1的编码诞生了。在Facebook的测试中,它分别比VP9和H.264强上34%、46.2%,这次看上去是真的达到HEVC的级别了。
2.11 免费的AV1
AOMedia Video 1(AV1)是一个开放,免专利的视频编码格式,针对互联网传输视频而设计。它目前由开放媒体联盟(AOMedia)所开发,该联盟由半导体企业、视频点播供应商和网页浏览器开发商等于2015年成立。它是互联网工程任务组(IETF)视频标准化工作组NetVC的主要竞争者。其目标是取代前身VP9,并与MPEG的HEVC/H.265竞争。AV1可以与HTML5网页视频和WebRTC未来版本的WebM容器格式的音频格式opus一起使用。
Alliance for Open Media (AOMedia)该联盟的主要目标是创建和交付下一代技术开放视频压缩格式和编解码器,这些视频压缩格式对互联网上的流媒体媒体进行了优化,包括商业和非商业内容,包括用户生成内容。联盟目前正在开发一种名为AV1的新型视频格式。来自芯片工业(AMD,ARM,英特尔,Nvidia)的联盟成员将确保硬件友好的设计。AOMedia计划在2017年底前完成其格式(AV1)的第一个版本。关于bitstream规范的工作将在2018年继续进行。AV1是专门为实时应用程序设计的,比当前生成的视频格式(h.264)的典型使用场景更能解决问题。
HEVC/H265因为版税这次有点犯众怒,组成AOMedia就是信号,**大家原来各自开发的编解码器对抗不了HEVC/H265?**那就联合起来。
当然,推动HEVC的组织在这一过程中并不会坐视不管。他们已经开始威胁要对AV1发起专利诉讼,而开放媒体联盟AOMedia将不遗余力地确保它不会发生。他们正在对AV1进行广泛的法律代码审查,以确保它不会侵犯MPEG LA、HEVC Advance和Velos Media,以及Technicolor等所拥有的任何专利。这种形式的代码复查对VP8和VP9非常成功,这两种方式都能在所有法律挑战中存活下来。MPEG LA对VP8和VP9的行动被认为可能没有任何法律基础,反而纯粹是反竞争。美国司法部正在调查MPEG LA的行动,直到他们同意放弃诉讼,并允许谷歌允许将MPEG LA的专利池授权给VP8或VP9的任何用户。虽然我们可能会看到类似的阻止AV1的尝试,但谷歌大幅扩大了专利池,支持codec的公司数量大幅增加(这要归功于开放媒体联盟),这两家公司都应该在很长一段时间内确保它们能得到处理。
不过从Netflix决定使用AV1作为主力编码这种态度来看,AV1免费、开放的特性还是具有相当的吸引力的。但目前在硬件方面是缺乏对它的支持的,不仅是PC端没有针对AV1做硬件解码,数量更多的移动设备也没有适配,前不久刚有一款宣传是首个加入对AV1硬件解码的SoC才发布。对比起硬件支持较为齐全的HEVC,这将是AV1推广之路上的一道槛。
2.12 未来编码:H.266/VVC
VVC (Versatile Video Coding)是从HEVC发展而来,其目标是将HEVC/H.265的编码性能提高一倍,计划在2020年10月发布标准最终版,其官方标准测试模型VTM目前已经发展到4.0版本(对应JVET第14次会议JVET-N)。在确定新一代编码标准为VVC(通用视频编码,versatile video coding)之前,MPEG和VCEG联合建立了JVET小组,并发布测试模型JEM用于测试新编码技术性能。
新特性有:更为复杂的编码单元结构;更大、更细致的区块划分;全局帧参考;更多的帧内预测模式(目前已经有67种)……在复杂度上面,相比HEVC,VVC将会直接高出一个维度。
2.13本土编码 AVS
AVS是中国具备自主知识产权的第二代信源编码标准,是《信息技术先进音视频编码》系列标准的简称,其包括系统、视频、音频、数字版权管理等四个主要技术标准和符合性测试等支撑标准。
AVS从其出生之日就不是一个简单的市场化行为,这决定了行政力量是AVS的主要推动力。2002年6月,“数字音视频编解码技术标准工作组”(简称AVS工作组)由国家信息产业部科学技术司批准成立,挂靠单位为中国科学院计算技术研究所。工作组的任务是:面向我国的信息产业需求,联合国内企业和科研机构,制(修)订数字音视频的压缩、解压缩、处理和表示等共性技术标准,为数字音视频设备与系统提供高效经济的编解码技术,服务于高分辨率数字广播、高密度激光数字存储媒体、无线宽带多媒体通讯、互联网宽带流媒体等重大信息产业应用。
2006年2月,AVS视频编码成为国家标准,获批的标准号为GB/T20090,并于2006年3月1日起实施。数字音视频编解码技术标准工作组。
2019年9月16日,华为海思发布全球首颗基于AVS3.0视频标准的8K/120fps解码芯片Hi3796CV300,CPU处理能力达到4核1.6GHz,28nm工艺,助跑广电进入全8K时代。
3.小结
一个视频标准的普及其实是商业利益博弈的结果。要看能否成为标准或者普及有时候要看对手是怎么样的。