两代的差距集中在块、方向、滤波三处: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 秒实验
- 用 FFmpeg 把同一个视频压成 libx264 与 libx265 两份,码率都设 4 Mbps。
- 对比画质与耗时——这就是【一半码率换 2~3 倍复杂度】的真身。
常见误区
- 以为 CTU 必须用满 64×64。它按四叉树细分,细节处会切到 8×8。
- 以为 SAO 是【另一种去块滤波】。它是逐样点修正,跟在去块之后。
- 以为新标准可以无脑替换。要看设备支持、专利成本与分辨率场景,常常两套并存。
自测三问(点开对答案)
1. H.265 相对 H.264 最根本的变化是什么? —— 块结构从固定宏块变成 CTU 四叉树,最大 64×64。 2. SAO 与去块滤波的关系是什么? —— 先去块滤波,再用 SAO 逐样点修正。 3. 选 H.264 还是 H.265 看哪三条? —— 分辨率场景、目标设备支持、专利成本。- ☑ 全书完结:11 章 124 篇读完 🎉
相关笔记
- H.265编解码概述 — H.265 的整体介绍
- H.264的帧间预测编码 — H.264 那一侧的做法
- I/P/B/IDR帧 — 帧类型的共同基础
- 视频压缩 — 187 与 373 的出处
- 🎬 FFmpeg入门详解 · 索引