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

两代的差距集中在块、方向、滤波三处:CTU 64×64 四叉树、35 种帧内模式、去块加 SAO——换来一半码率,代价是 2~3 倍的编码复杂度。

📝 本节和前面几节的关系

11.1 与 11.2 讲了 H.265 的概貌与结构,这一节把两代标准并排做一次总对照,也收束整本书。

一、块:从宏块到 CTU

这是两代标准最根本的差别,看数字最直观: H.264——固定 16×16 宏块,1080p 一帧 8160 个; H.265——最大 64×64 的 CTU,1080p 按 64×64 切只要 510 个——少了 16 倍; 但 CTU 不是【必须用满 64×64】——它按四叉树逐层细分,平坦区域停在大块,细节区域一直切到 8×8; 于是描述开销小了,细节又没丢——这就是那一半码率的主要来源。

二、方向:从九种到三十五种

帧内预测的粒度提升非常夸张: H.264——4×4 九种模式(八个方向 + DC); H.265——35 种角度模式,几乎覆盖了整个方向空间; 方向越多,预测越贴合真实边缘,残差就越小; 代价同样直接:每个块要试的模式多了近四倍,模式选择的耗时随之上涨(第 9.2.3 节)。

三、滤波:多了一个 SAO

H.265 在滤波环节加了一级,位置很讲究: 先去块滤波——与 H.264 一样,抹平块边界; 再 SAO(样点自适应偏移)——逐样点做修正,给每个样点加一个小偏移; 它主要压掉振铃与条带这类失真,尤其是在平坦区域效果明显; 代价是参数要写进码流——滤波越精细,描述它的位数越多。

四、优势与代价的账

把收益和代价并排放,选型才算有依据: 收益——1080p 同画质从 8 Mbps 降到 4 Mbps,对未压缩的压缩比从 187 倍涨到 373 倍; 代价——编码复杂度约 2~3 倍;解码门槛提高,老设备解不动; 另一个代价——专利比 H.264 复杂,多个专利池并存,这是不少厂商转向 VP9/AV1 的现实原因; 所以【什么时候用 H.265】是一个工程决策,不是技术参数题。

五、到底该选哪个

把决策规则写清楚,就三条: 4K/HDR 内容——必用 H.265,否则码率压不住; 1080p 及以下——先看设备支持,若目标设备普遍能解 H.265,用了能省带宽;否则 H.264 更稳; 有专利顾虑的场景——需要认真评估授权成本,必要时考虑 VP9/AV1; 实际生产中常见的是多套码流并存,由客户端按能力挑——这才是把两个标准都用好的方式。

六、全书收束

从这里回头把整门课串一遍: 第一章讲的是心态——方向即权重; 第二、三章给出门槛与工具; 第四、五章分别把音频与视频的物理与数字基础铺开; 第六章抽出压缩的共性,第七章对接标准,第八章落到技术与流程; 第九、十、十一章是三个具体标本:H.264、AAC、H.265。 整条线只有一句话:从【看得见的画面与声音】,走到【一行行字节】。

七、动手 Demo:H.264 与 H.265 的正面对照

把两代标准并排放在四个维度上比,取舍一目了然。

raw = 1920 * 1080 * 3 * 8 * 30 / 1e6
rows = [("1080p 同画质码率", "8 Mbps", "4 Mbps"),
        ("对未压缩压缩比", "%.0f : 1" % (raw / 8), "%.0f : 1" % (raw / 4)),
        ("编码复杂度", "基准 1 倍", "约 2 ~ 3 倍"),
        ("专利情况", "池相对成熟", "多个专利池,复杂")]
for a, b, c in rows:
    print("%-16s %-14s %s" % (a, b, c))

实跑输出:

--------------------------------------------------------------------
H.264 与 H.265 的正面对照
--------------------------------------------------------------------

把两代标准并排放在四个维度上比,取舍一目了然。

  维度                 H.264(AVC)       H.265(HEVC)
  -------------------------------------------------------------
  1080p 同画质码率     8 Mbps             4 Mbps
  对未压缩的压缩比     187 : 1            373 : 1
  编码复杂度           基准 1 倍          约 2 ~ 3 倍
  专利情况             专利池相对成熟     多个专利池,情况复杂

  再看一眼【块】的变化,它就藏在 CTU 这个新词里:
    1080p 用 16×16 宏块切:**8160 个**
    1080p 用 64×64 CTU 切:**510 个**——**少了 16 倍**

  这两个数就是 HEVC 的骨架:**块大了,描述开销就小了;**
  **而块内还能按四叉树继续细分,需要细节时又不会损失精度。**
  **一半的码率就是这么省出来的。**

1080p 用 16×16 宏块切是 8160 个,用 64×64 CTU 切只有 510 个——少了 16 倍。 块大了描述开销就小,块内还能按四叉树细分,需要细节时又不会损失精度。 一半的码率就是这么省出来的。

30 秒实验

  1. 用 FFmpeg 把同一个视频压成 libx264 与 libx265 两份,码率都设 4 Mbps。
  2. 对比画质与耗时——这就是【一半码率换 2~3 倍复杂度】的真身。

常见误区

  1. 以为 CTU 必须用满 64×64。它按四叉树细分,细节处会切到 8×8。
  2. 以为 SAO 是【另一种去块滤波】。它是逐样点修正,跟在去块之后。
  3. 以为新标准可以无脑替换。要看设备支持、专利成本与分辨率场景,常常两套并存。
自测三问(点开对答案) 1. H.265 相对 H.264 最根本的变化是什么? —— 块结构从固定宏块变成 CTU 四叉树,最大 64×64。 2. SAO 与去块滤波的关系是什么? —— 先去块滤波,再用 SAO 逐样点修正。 3. 选 H.264 还是 H.265 看哪三条? —— 分辨率场景、目标设备支持、专利成本。

相关笔记