视频压缩的基本技术只有六项,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 秒实验
- 用 MediaInfo 打开一个视频,找到【格式档次】那一栏,看写的是 Baseline、Main 还是 High。
- 再找一个老手机拍的视频对比一下,大概率是 Baseline。
常见误区
- 以为 H.264 是凭某一项新技术取胜的。它是六项技术一起做到位的结果。
- 以为环路滤波只是后期美化。它在预测环路里,滤波结果会成为后续帧的参考。
- 把 CABAC 与 CAVLC 当成一回事。前者压得更小但更慢,是明确的取舍。
自测三问(点开对答案)
1. 视频压缩的六项基本技术是什么? —— 帧内预测、帧间预测、变换、量化、熵编码、环路滤波。 2. H.264 的【砍半】主要来自哪一项? —— 帧间预测的三项改进:可变分块、亚像素精度、多参考帧。 3. 环路滤波为什么叫【环路内】? —— 它在预测环路中,滤波后的帧会被后续帧当作参考。- ☐ 下一节(9.1.2 H.264的句法元素)
相关笔记
- H.264的句法元素 — 这些技术怎么写成码流
- H.264的帧内预测编码 — 九种模式的展开
- 视频编码简介 — 六个模块的整体视角
- H.26x系列 — H.264 在家族里的位置
- 🎬 FFmpeg入门详解 · 索引