🎬 第九章 H.264编解码基础
📄 一句话概括

视频压缩的基本技术只有六项,H.264 没有一项是首创——它赢在把每一项都做到了当时的极限,特别是预测那几项。

📝 本节和前面几节的关系

第八章把编码技术与流程整体讲了一遍,从这一章开始盯住一个标准看细节:H.264。

一、六项基本技术

把前面几章讲过的技术归一下类,其实只有六项: 帧内预测——去掉空间冗余(第 6.4.1 节); 帧间预测——去掉时间冗余(第 6.4.2 节); 变换——把能量集中(第 6.3.2 节); 量化——丢掉不敏感的细节,唯一丢信息的一步(第 6.3.3 节); 熵编码——无损收尾(第 6.3.4 节); 环路滤波——抑制块效应(第 5.3.4 节)。

二、H.264 把每一项做细了

这六项在 H.264 里各自长成了具体的形态: 帧内预测从【没有】变成 4×4 九种方向 + 16×16 四种模式 + 色度四种; 帧间预测有了 七种分块大小 + 1/4 像素精度 + 多参考帧; 变换用 4×4 与 8×8 的整数变换(避免浮点误差); 量化变成 52 级可调的 QP; 熵编码给了两种选择——CAVLC 快、CABAC 压得小; 环路滤波做进了预测环路,解码端也照做。

三、哪一项带来了【砍半】

第 7.4.3 节说过,H.264 同画质码率约为 H.263 的一半。这个【一半】主要是谁贡献的? 按经验,帧间预测的三项改进(分块、亚像素、多参考)贡献最大; 其次是帧内预测——它让 I 帧本身也压得更小; 熵编码的 CABAC 能再省一成左右; 环路滤波不直接省码率,它省的是【为了不出现块效应而被迫提高的码率】。 结论仍然是 8.1 那句:预测才是压缩比的主战场。

四、为什么还有【环路滤波】这一项

块效应是从哪来的、为什么要专门滤波,值得单独说一句: 编码是逐块做的,相邻块各自量化,边界处容易出现不连续; 肉眼看到的就是一格一格的方块,尤其在低码率下非常明显; 环路滤波就在预测环路里——滤波后的帧会成为后续帧的参考帧; 所以它不只让当前帧好看,还阻止块效应被下一帧继承下去。 这也是为什么它叫【环路内】滤波,而不是【后处理】滤波。

五、本章的三段路线

第九章按三段展开,从外到内: 9.1 快速入门——基本技术、句法元素、VCL/NAL、档次级别、两种实现; 9.2 原理与实现——整体结构、编解码流程,以及帧内/帧间预测的细节; 9.3 码流结构——分层结构、码流组成、NAL Unit 的字节级解剖。 从这一章起,视野从【原理】落到【具体一份标准】。

六、动手 Demo:六项基本技术在 H.264 里的形态

视频压缩的基本技术只有六项,H.264 把它们各自做细了。

rows = [("帧内预测", "空间冗余", "4×4 九种 / 16×16 四种"),
        ("帧间预测", "时间冗余", "七种块大小 + 1/4 像素"),
        ("变换", "空间相关", "4×4 / 8×8 整数变换"),
        ("量化", "不敏感的细节", "52 级 QP"),
        ("熵编码", "统计冗余", "CAVLC / CABAC")]
for a, b, c in rows:
    print("%-8s %-8s %s" % (a, b, c))

实跑输出:

--------------------------------------------------------------------
六项基本技术在 H.264 里的形态
--------------------------------------------------------------------

视频压缩的基本技术只有六项,H.264 把它们各自做细了。

  基本技术     去掉什么         H.264 的具体形态
  ---------------------------------------------------------
  帧内预测     空间冗余         4×4 九种 / 16×16 四种
  帧间预测     时间冗余         七种块大小 + 1/4 像素精度
  变换         空间相关         4×4 / 8×8 整数变换
  量化         不敏感的细节     52 级 QP
  熵编码       统计冗余         CAVLC / CABAC
  环路滤波     块效应           帧内去块滤波

  **六项里没有一项是 H.264 首创,它赢在把每一项都做到了当时的极限。**
  这一章就按这张表的顺序,把 H.264 的每一项展开。

六项里没有一项是 H.264 首创,它赢在把每一项都做到了当时的极限。 这一章就按这张表的顺序,把 H.264 的每一项展开。

30 秒实验

  1. 用 MediaInfo 打开一个视频,找到【格式档次】那一栏,看写的是 Baseline、Main 还是 High。
  2. 再找一个老手机拍的视频对比一下,大概率是 Baseline。

常见误区

  1. 以为 H.264 是凭某一项新技术取胜的。它是六项技术一起做到位的结果。
  2. 以为环路滤波只是后期美化。它在预测环路里,滤波结果会成为后续帧的参考。
  3. 把 CABAC 与 CAVLC 当成一回事。前者压得更小但更慢,是明确的取舍。
自测三问(点开对答案) 1. 视频压缩的六项基本技术是什么? —— 帧内预测、帧间预测、变换、量化、熵编码、环路滤波。 2. H.264 的【砍半】主要来自哪一项? —— 帧间预测的三项改进:可变分块、亚像素精度、多参考帧。 3. 环路滤波为什么叫【环路内】? —— 它在预测环路中,滤波后的帧会被后续帧当作参考。

相关笔记