别再傻傻分不清 AVSx H.26x MPEG-x 了
在音视频发展的历程中,编解码无疑是其最核心的功能,编解码标准的更新换代也极大促进了音视频技术的发展以及行为模式的变更。从电视到网络视频以及现在的网络直播、点播、音视频会议等等,这些变化的背后都离不开音视频编解码技术的更新迭代。比如H.264(仍然是目前使用最多的编解码规范)以及H.265/HEVC(部分大厂在使用 优酷 腾讯等),以及国内的AVS系列。
h.26x系列
视频编码标准的发展简史
H.261-视频编奠基者
H.261设计的目的是能够在带宽为64kbps的倍数的综合业务数字网(ISDN for Integrated Services Digital Network)上传输质量可接受的视频信号。编码程序设计的码率是能够在40kbps到2Mbps之间工作,能够对CIF和QCIF分辨率的视频进行编码,即亮度分辨率分别是352x288和176x144,色度采用4:2:0采样,分辨率分别是176x144和88x72。
H.261在图像编码上使用了我们现在比较熟悉的离散余弦变换(DCT)算法, 它在后来的JPEG编码中起主要作用。但不止于此,它引入了一系列针对视频的特性,奠定了现代视频编码的基础,其中主要有宏块(Macroblock)和基于宏块的运动补偿(Motion Compensation)。
H.261使用YCbCr颜色空间,并采用4:2:0色度抽样,每个宏块包括16x16的亮度抽样值和两个相应的8x8的色度抽样值。YCbCr又成为YUV,仍然是现在编解码规范所采用的色彩空间。
宏块与基于运动补偿的帧间预测
我们知道,视频是由一帧一帧的图像组成的组合,一般情况下一秒钟的视频中会包含24、25、30、60或更多张图片,它们按照一定的时间间隔播放出来,基于视觉残留原理形成了流畅、会动的画面。在连续的几帧之间,实际上存在着大量重复的画面,比如说下面这个例子:
一个白色台球在绿色桌面上面运动
用小球运动的方向和距离来描述图像的变化
如果是以传统的思路对每一帧图像做压缩的话,显然整个视频在压缩过后仍存在大量的冗余。那么怎么办呢?H.261标准引入了宏块的思维,它将整个画面切分为许多小块,然后再引入基于运动补偿的帧间预测——画面的大部分都是不动的,那么我们将不动部分的区块沿用之前的压缩结果,动的部分用运动方向加距离这样一个矢量来描述不就可以节省出大量的存储空间了吗?
DCT算法
将8x8个像素分成一个块
DCT算法起源于上世纪70年代,到了80年代中后期,有研究者开始将其用于图像压缩。这种算法可以将图像从空间域转换到频率域,然后做量化——减少人眼敏感程度较低的高频信息,保留绝大部分低频信息,从而减少图像的体积。最后再用高效的数据编码方式将处理过后的数据进一步压缩,这里使用了Zig-Zag扫描和可变长编码。
在H.261及之后基于H.261框架的视频编码中,DCT算法主要针对的是关键帧的压缩,所谓关键帧,就是在运动补偿中作为基准参考的一帧。打个比方,就像Flash动画中的关键帧一样,它定义了一个起点,后续的几帧都是基于这个关键帧演算出来的。因为它只做帧内压缩,不涉及其他帧,又被称为Intra-frame(帧内编码帧),简称I帧。
MPEG-1:引入帧类型概念
MPEG-1是为CD光盘介质定制的视频和音频压缩格式。MPEG-1采用了块方式的运动补偿、离散余弦变换(DCT)、量化等技术,并为1.2Mbps传输速率进行了优化。MPEG-1随后被Video CD采用作为核心技术。
音频-MP3
MPEG-1音频分三代,其中最著名的第三代协议被称为MPEG-1 Layer 3,简称MP3,目前仍然是广泛流传的音频压缩技术。
视频-引入B帧以及GOP
在H.261中其实已经有视频帧的概念了,比如上面的关键帧(就是一张完整的静态图像,可以直接被解码出来),另外的帧则是通过运动补偿算法在关键帧之上计算得到的。
不过MPEG-1 真正引入了帧类别的概念,原来的关键帧被称为“I帧”,基于帧间预测计算得到的帧为P帧。在这两种H.261已有的帧类型外,它引入了一种新的帧:双向预测帧,也叫作B帧。
不过引入B帧的同时,也使编解码的复杂度提高了,MPEG-1 又提出了GOP( G roup o f p ictures),即I画格和I画格之间的画格排列。
图像群组就是一组以MPEG编码的影片或视讯串流内部的连续图像。每一个以MPEG编码的影片或视讯串流都由连续的图像群组组成。
下图是GOP示例
MPEG-2:DVD标准
对于MPEG-1,它并没有太大的改动,主要是针对DVD应用和数字时代进行了改良。
支持隔行扫描
隔行扫描 (英语:Interlaced)是一种将图像显示在扫描式的显示设备上的方法相比逐行扫描,隔行扫描占用带、宽比较小。扫描设备交换扫描偶数行和奇数行。
H.263:熟悉的3GP视频
原先的H.261和MPEG-1都是偏向于低码率应用的,随着互联网和通讯技术的飞速发展,人们对网络视频的需求在提高,在低码率下追求更高质量的视频成为了新的目标,而作为通信业的一大标准制定者,ITU-T在1995年推出了H.261的直接继承者——H.263。
在上世纪90年代,3GP也是风靡一时,它减少了存储空间和较低的带宽需求,让手机上有限的存储空间可以使用。目前在3GP中H.263仍然占据着主流地位。
H.264/MPEG-4:到了熟悉的Part
H.264/AVC 是一种面向块,基于运动补偿的视频编码标准 。到2014年,它已经成为高精度视频录制、压缩和发布的最常用格式之一。
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)。
- …
H.265/HEVC:尴尬的继任者
作为H.264的继任者,HEVC被认为不仅提升影像质量,同时也能达到H.264/MPEG-4 AVC两倍之压缩率(等同于同样画面质量下比特率减少到了50%),可支持4K清晰度甚至到超高清电视(UHDTV),最高清晰度可达到8192×4320(8K清晰度)。
下图是H265与h264 主观视频性能比较
从上面的性能比较我们知道H.265在各种参数上都要优于H.264,那为什么说它是 尴尬的继任者 呢,
- 现有大部分音视频还是以H.264为主,且H.264可以满足大部分的场景
- 授权费过于昂贵,国内外音视频服务厂家被H.264已经薅了一次羊毛,如果再支持H.265又要交授权费用,所以目前只有一部分大厂(腾讯,优酷)再特定的影片上使用。
- H.266已经发布,所以如果确实有需求的可能等着接入H.266,不太需要的仍然不会接入H.265,所以它的位置比较尴尬。
不过H.266可能还需要几年的发展,留给H.265的时间不多了,不过它仍然有机会。
H.266/VVC:未来编码
它来了它来了,它迈着六亲不认的步伐走来了,必将引领新一代音视频世界的发展,它就是H.266/VVC。
2020年7月,H.266/VVC 视频编解码标准宣布编辑完成,也是这个时刻为未来10年内音视频发展方向指明了方向。
VVC 全称Versatile Video Coding(多功能视频编码), 也称为 H.266 、 MPEG-I第3部分 或 未来视频编码 ( FVC )。VVC的设计初衷是为了在同样的视频质量下达到更大的压缩比、更低的码率,为4k、8k超清视频、360全景视频等更多场景赋能。当然VVC还有其他特性:
- 无损和主观无损压缩。
- 4K到16K的分辨率以及全景视频
- 10至16位的YCbCr 4:4:4、4:2:2和4:2:0、BT.2100宽色域
- 峰值亮度为1000、4000和10000尼特的高动态范围(HDR)
- 辅助通道(用于记录深度,透明度等)
- 0-120 Hz的可变帧速率和分数帧速率
- 关于时间(帧速率)、空间(分辨率)、信噪比、色域和动态范围差异的可适性视频编码
- 立体声/多视角编码
- 全景格式
- 静态图像编码
该标准预期的编码复杂度为HEVC的数倍(最多十倍),但具体取决于编码算法的质量。其解码复杂度预期约为HEVC的两倍。
视频标准更新换代/编码效率的更新
PS
• VTM = VVC test model, latest version is VTM-10.0 (测试模型参考软件平台)
• JVET = Joint Video Experts Team of the ITU-T VCEG and ISO/IEC MPEG (VVC标准委员会)
H.266/VVC优点
降低成本
现有的H.264/H.265已经满足大部分的音视频业务需求,但是在一些业务下已经达到了瓶颈,还有CDN的带宽流量也是一比很大的投入,如果能在在同样的视频质量下达到更大的压缩比、更低的码率,那么就意味着能以同样的CDN服务器服务更多的客户,降本提效。
赋能更多场景
新兴的业务比如VR(Virtual Reality虚拟现实),AR(Augmented Reality 增强现实),360全景等,必须使用4k甚至更高的8k分辨率才能达到效果,在这个情境下就是如何更快(低延迟)、更好(分辨率)、更少(低码率)的传输数据,现有的编解码方案已经无法满足。国内外VVC发展现状
国内H.266的发展
- 积极参与H.266的标准制定,其中代表的是腾讯、阿里,都在H.266制定标准的过程中提交了几百份提案,被采纳率过半。积极参与规则的制定,后面才有发言权,这是血的教训。
- 腾讯开源首个H.266编解码器https://github.com/TencentCloud/O266player,详情请参看https://www.infoq.cn/article/auuthrzodb8j2k8lmrsz
AVS系列
AVS发展历史
国内的AVS编解码标准由于起步较晚,大部分专利都在国外,大部分国内企业还是会沦落到任人宰割的境地。另外AVS编码体系性能上还是有所不足。根据IEEE出具的一份HEVC/VP9/AVS2编码效率对比报告,其中在随机访问条件下,HEVC性能优于VP9 24.9%,AVS2 6.5%;在延迟条件下,HEVC优于VP9 8.7%,AVS2 14.5%。在某些领域,AVS2对比HEVC已经相差不大,但从总体性能和应用规模来看,AVS2还有很长的路要走。所以即使国家在极力推动AVS,其应用场景还是比较少,国企里用的比较多。
Google系列
VP8
从技术角度来说,VP8采用的技术是类似于H.264的。虽然在我们看到的宣传中,VP8拥有比H.264更佳的压缩效率,但在实际应用中,由于它在设计上有一定的瑕疵,表现并不如H.264,最终它虽然进入了Web标准,但也没见有人用它,反而是由它的帧内压缩技术提取而成的WebP受到了欢迎。
VP9
VP8的表现并不理想,Google很快就推出了它的继任者——VP9。这次,他们参考的是HEVC,设计目标同样是高分辨率下的高效编码。VP9中的一些设计是受到了HEVC的影响的,比如说同样最大为64x64的超级块(Super Block)。最终VP9达成的结果是提供了比VP8高达50%的效率提升。看起来它能够和HEVC比肩了,但是它也遇到了和VP8相似的问题,推广不开。VP9的应用范围实际也局限在Google自家的Youtube中,只能说是缺少实际应用场景。
未来音视频发展的思考与展望
深度学习以及端-端智能赋能未来音视频发展。
深度学习
通过模型训练AI来智能调整编解码器参数。
端智能
建立端-端的通信链路