H.264 也被称为高级视频编码(AVC),尽管已经诞生了近二十年,但在多种视频编解码器并存的时代,它仍然是主流,我们还可以看到 HEVC/H.265、VP9、AV1 和新兴的 H.266/VVC。今天,我们将从当代视角对这种编解码器进行深入回顾,包括它是如何出现的、它是如何工作的、它现在处于什么位置以及它将走向何方。
什么是 H.264/AVC(高级视频编码)
要录制、存储或传输视频而不进行压缩是不可能的,或者说是极其困难的,因为它有大量的数据需要处理。但实现压缩的方法太多,可能会造成混乱。因此,视频编解码器标准化的出现,使不同的软件和硬件制造商都能在通用的视频压缩规则下工作,例如,VCEG 的 H.26x、美国电影电视工程师协会(SMPTE)的 VC-1 和谷歌的 VPx。
H.264 是视频编码标准之一,由 ITU-T VCEG(视频编码专家组)和 ISO/IEC JTC1 的 MPEG(运动图像专家组)共同开发。该合作项目也被称为 JVT(联合视频小组)项目。因此,该标准通常被称为 MPEG-4 第 10 部分,高级视频编码或 MPEG-4 AVC,这清楚地说明了其开发者的双方立场。
H.264 创立于 2003 年,通过帧间预测和运动补偿技术,在压缩效率和编码算法方面取得了巨大进步。用 H.264 压缩的视频(1080p 和 4K)相对更容易保存、压缩和通过网络传输。它是几乎所有多媒体行业(包括 DVD/BD、HDTV、流媒体平台、直播、广播、视频录制等)最常用的编解码器。
H.264 AVC 视频编解码器的发展历程
回顾 H.264 的发展历程,我们会发现它并非天生就具有以高压缩率压缩所有视频的能力。在随后的几年中,它不断扩展,增加了各种增强功能,包括支持高保真和 3D 视频,以及提高编码效率。
H.264/AVC 编解码器的优势
H.264 的视频压缩效率和算法已被后继者超越。但在 H.26x 编解码器系列的发展过程中,这是一个巨大的飞跃。主要的改进包括块间变换、运动估计、环内去块滤波器和熵编码。H.264 又是如何从中受益的呢?
- H.264 具有高性能的视频编码设计,与 MPEG-2 相比可节省高达 50% 的比特率,与 Motion JPEG 视频相比可节省 80% 的比特率。
- 它支持高清视频,包括 1080p 和 4K @60fps。
- H.264 是各种软件、硬件和网络中最流行的视频编解码器,比 H.265/HEVC 更受青睐。
- H.264 可满足各种带宽要求,并支持不友好的网络条件。
H.264/AVC 的工作原理
H.264 沿用了以往视频编码算法的一般流程,并在某些部分实现了技术创新。H.264 编码的整个过程包括估计、变换、量化、去方块滤波和熵编码。
1. 帧间预测和帧内预测
视频编码的永恒目的是提高提高效率、节省码率。H.264 在这一领域比其前辈有了飞跃性的进步。它通过帧间预测消除时间冗余,通过帧内预测消除空间冗余。
H.264 在相互预测中使用了运动参考模式。例如,H.264 不再记录球在背景下运动的所有帧,而是只保留几帧的全部信息。至于其他帧,由于背景保持不变,H.264 只保留运动项目的变化信息。
- I 帧包含图像的全部信息,其编码与其他非 I 帧图像无关。
- P 帧包含相对于前面的帧的差异。
- B 帧包含相对于前一帧和后一帧的差异。
- GOP(图片组)由 I、P、B 帧组成,从 I 帧开始。典型的结构可以是 IBBPBBPBBI 或 IBBPBBPBBPBBI。I 帧之间的帧数越多,GOP 就越长。
帧间预测在之前的H.26x系列和MPEG-x系列标准中已经应用,但效率不如H.264,而帧内预测则是H.264的高级功能,是从微观角度对图像数据进行预测,每一帧被划分为像素块,每个像素块称为宏块,而帧内预测则是通过参考当前图像中周围的像素和之前编解码的像素来预测块的亮度和颜色分量。
H.264 的帧内预测方式相当灵活,支持 9 种方向预测模式,4 种宏块分割方式(16×16、16×8、8×16、8×8),当处理色彩亮度变化不复杂的图像时,会将宏块分割为 8×8、4×8、8×4、4×4 的子宏块。
- 运动估计:帧被分成宏块,运动估计的过程就是在帧间寻找并找到最佳匹配的像素块。
- 运动补偿:运动估计后从当前宏块中减去帧间预测的过程。
2. 变换和量化
虽然帧间和帧内预测消除了大量冗余数据,但残余数据还可以进一步修改。接下来就是变换。其目的是将运动补偿的残差数据转换到另一个域中。该视频编码标准中使用的变换在计算上非常灵活,只需较少的内存和算术运算次数。DCT(离散余弦变换)是 H.264 的最佳工作方法之一。它是一种可修改的计算方法,适用于变换过程的主要条件。
变换后的数据是一组系数。量化就是缩小变换系数的范围,并将其映射到特定的范围,因为人类对低频信号比高频信号更敏感。量化的目的是压缩高频信号,以获得更好的视觉效果。
3. 去区块滤波器
由于 H.264/AVC 以块为导向,压缩视频由方形块组成,这可能会产生严重的伪影。其自适应去区块滤波器可以平滑像素块之间的边缘。该滤波器在切片级、块边缘级和采样级三个级别上具有自适应功能。它能显著改善视觉质量,同时节省约 6-9% 的比特率。
4. 熵编码
熵编码是一种无损数据压缩方案,用于将图像数据转换成可存储和传输的比特流。它不仅包括完整的视频序列,还包括量化的变换系数、压缩数据结构和预测信息等。
H.264 中使用的熵编码算法是 CABAC(上下文自适应二进制算术编码),其显著特点是压缩效果远远优于其他算法。这也是 H.264/AVC 远胜于前代产品的关键因素之一。
播放 H.264 视频就是对其进行反向编码解码。视频解码器接收比特流,然后解码并从上面的元素中提取信息,最后重建图像序列。
H.264/AVC 和 WebRTC
H.264/AVC 在很大程度上缩小了媒体文件,使视频能在互联网上快速传播,这样我们就能随时随地观看流媒体平台上的视频或直播。但在 2013 年之前,在网络上实现原生实时视频并非易事。因为 H.264 是一种获得专利的视频编解码器,任何想使用这种压缩技术的人或公司都需要向该编解码器的授权提供商 MPEG-LA 支付一大笔费用。
2013年,思科在IETF(互联网工程任务组)和W3C(万维网联盟)制定的标准下,发布了开源H.264,为WebRTC扫清障碍。它提供的源代码和二进制模块可从互联网上免费下载。此外,思科没有将其 MPEG LA 许可费用转嫁给该模块,从而实现了 H.264 和 WebRTC 的有效合作。目前,H.264 在 WebRTC 中占有重要的一席之地。
思科推动了行业在 WebRTC 方面的进步,并让全球的开发人员、用户和供应商广泛使用该技术。同年,Mozilla 宣布使用该模块,并在大多数操作系统上的 Firefox 浏览器中引入了实时 H.264 支持。次年,爱立信发布了一款基于 WebRTC 的浏览器,支持 openH264。谷歌曾在 2011 年从 Chrome 浏览器中删除了 H.264 编解码器。但后来,它在 Chrome 50 中重新获得了支持。
WebRTC 支持 H.264 的好处
它能与大多数支持视频功能的移动设备和浏览器实现互操作性,这对行业认可度非常高。您可以使用它进行 P2P 视频通话,并在 Web 或移动应用程序中实时集成音频、视频和文本通信。
但是,H.264 并非唯一的选择。VP8、VP9 和 AV1 等更多开源视频编解码器应运而生,它们的效率是 H.264 的两倍,有望被更多在线服务采用。
H.264 的未来
H.264 会被更新的编解码器取代吗?每次有新的编解码器出现,我们都会问这个问题,但始终没有定论。
有人认为它可能会被 HEVC 取代。但目前而言,H.264依然占比很高。而 Plex 仍然只能转码为 H.264/AVC(无论来自何种源格式)。回过头来看,很多视频编解码器都被淘汰了,如 H.263 和 H.26L。但是,MPEG-2 仍在 DVD 和 BD 产业中发挥作用,这表明在视频传输领域具有重要里程碑意义的编解码器可以持续更长时间。至少现在,H.264 在兼容性、编码效率和视频质量方面仍然表现出色。
我们有理由预测,当压缩比更高的编解码器在各种应用和设备上大行其道时,战场将转向专利池。一些专家断言,免版税编解码器更有前途,如 VP9 和 AV1,它们是对 MPEG 编解码器的巨大挑战。但是,由于一些已经开发出开源编码器(x.264、JM 等),H.264 并不严格受限于知识产权。H.264 能否在下一场视频编解码器革命中生存下来,我们拭目以待。
推荐阅读:《Z264自研编码器 画质更优且适用范围广》,Z264 是即构自研的一款编码器,拥有更好的画质及码率控制算法,在编码器的相同档位下深度优化算法,整体提升画质且不增加额外性能消耗。也就是说,在分辨率相同的情况下,Z264的清晰度更高、细节更好。欢迎测试使用。
原创文章,作者:ZEGO即构科技,如若转载,请注明出处:https://market-blogs.zego.im/reports-baike/1546/