🎬 第六章 音视频压缩编码基础
📄 一句话概括

量化是整条链路里唯一真正丢信息的步骤——而且QP 越小画质越好、码率越高,是一条单调的取舍曲线。

📝 本节和前面几节的关系

6.3.2 讲了变换,这一节讲真正决定【压缩多少】的那一步。

一、量化在做什么

量化的动作很简单:把连续的系数值,映射到有限的档位上。 挡位之间的间隔叫量化步长——步长越大,丢得越多,压得越狠。 在 H.264 这类标准里,量化步长由 QP(量化参数) 控制。 QP 每加 6,量化步长翻一倍——这是一个近似指数的关系。

二、为什么只有它丢信息

把它前后的步骤对比一下就清楚了: 预测:算残差,可逆;变换:换坐标系,可逆; 熵编码:换表示,无损; 量化:把多个值映射成一个代表值——不可逆。 所以整条链路里,只有量化这一步是【有损】的。

三、QP 与码率的关系

QP 18:画质很好,码率最高——适合存档与母版。 QP 23:通用点播的常见档位。 QP 28:移动端,体积优先。 QP 33:弱网直播,码率可以再砍半。 所以要调码率,最直接的手段是改 QP,而不是改分辨率—— 改分辨率会把画面尺寸也改了,而 QP 只动质量与体积。

四、为什么不能一直降码率

因为量化丢掉的细节永远补不回来(5.3.5 讲过反量化不是逆运算)。 压得太狠,会出现三类典型症状: 块效应——块边界对不齐,画面上出现方格; 色彩断层——渐变色变成一层层的色带; 细节糊掉——纹理被抹平,人物脸上像上了一层蜡。 所以【码率能降多少】这个问题,答案取决于内容能忍到什么程度。

五、动手 Demo:量化步长变了,码率跟着变多少

量化是整条链路里唯一真正丢信息的步骤。

rows = [("18", "很好", "约 12 Mbps", "存档、母版"),
        ("23", "好", "约 8 Mbps", "通用点播"),
        ("28", "可用", "约 4 Mbps", "移动端"),
        ("33", "较差", "约 2 Mbps", "弱网直播")]
for a, b, c, d in rows:
    print("QP %-4s %-8s %-12s %s" % (a, b, c, d))

实跑输出:

--------------------------------------------------------------------
量化步长变了,码率跟着变多少
--------------------------------------------------------------------

量化是整条链路里唯一真正丢信息的步骤。

  QP     画质     典型码率       说明
  ------------------------------------------
  18     很好     约 12 Mbps     存档、母版
  23     好       约 8 Mbps      通用点播
  28     可用     约 4 Mbps      移动端
  33     较差     约 2 Mbps      弱网直播

  注意第三、四行:**QP 从 28 放到 33,码率直接砍半。**
  而且 QP 越小画质越好、码率越高——**这是一条单调的取舍曲线**。
  所以调码率最直接的手段不是改分辨率,**而是改量化步长**。

注意第三、四行:QP 从 28 放到 33,码率直接砍半。 而且 QP 越小画质越好、码率越高——这是一条单调的取舍曲线。 所以调码率最直接的手段不是改分辨率,而是改量化步长。

30 秒实验

  1. 把同一段视频用 QP 23 与 QP 33 各压一次,比较体积。
  2. 再放大看块效应有没有出现。

常见误区

  1. 以为量化只是【降精度】。它会带来块效应、断层这些可见失真。
  2. 靠改分辨率调码率。改 QP 更直接,也不会动画面尺寸。
自测三问(点开对答案) 1. 整条压缩链路里哪一步真正丢信息? —— 量化。 2. QP 每加 6 会发生什么? —— 量化步长大约翻一倍。 3. 压得太狠会出现哪三类症状? —— 块效应、色彩断层、细节被抹平。

相关笔记