在音视频发展的历程中,编解码无疑是其最核心的功能,编解码标准的更新换代也极大促进了音视频技术的发展以及行为模式的变更。从电视到网络视频以及现在的网络直播、点播、音视频会议等等,这些变化的背后都离不开音视频编解码技术的更新迭代。比如 H.264(仍然是目前使用最多的编解码规范)以及 H.265/HEVC(部分大厂在使用 优酷 腾讯等),以及国内的 AVS 系列。
h.26x 系列
视频编码标准的发展简史
LoveYFan
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(Group of pictures),即 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/TencentClo...,详情请参看https://www.infoq.cn/article/...
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 来智能调整编解码器参数。
端智能
建立端-端的通信链路