H.265 编码基础与标准演进
各位好,我是老周。做视频编码这行十几年了,从 H.264 一路摸爬滚打到 H.265,踩过的坑能写满一本流水账。今天咱们先聊聊 H.265 的基础——说白了,就是搞清楚它到底比 H.264 强在哪,以及我们该怎么衡量它的性能。
H.265/HEVC 标准概述
H.265,官方叫 HEVC(High Efficiency Video Coding),是 2013 年由 ITU-T 和 ISO/IEC 联合推出的视频编码标准。它的目标很直接:在同等画质下,码率比 H.264 再砍一半。
为什么会有这个需求?我记得 2010 年左右,4K 电视开始冒头,H.264 压 4K 视频码率动不动就飙到 50-60 Mbps,网络传输和存储成本都扛不住。H.265 就是为这个来的——它专门针对高分辨率、高帧率场景做了大量优化。
核心定位:H.265 不是 H.264 的简单升级,而是一次架构级的重写。它保留了混合编码框架(预测+变换+量化+熵编码),但几乎每个模块都换了新玩法。
与 H.264 的核心差异
我经常被问到:“H.265 到底改了啥?” 其实差异点不少,但最关键的就这么几个:
| 对比维度 | H.264/AVC | H.265/HEVC |
|---|---|---|
| 编码树单元 | 固定 16x16 宏块 | 64x64 CTU,可递归划分 |
| 帧内预测模式 | 9 种 | 35 种(含 33 种角度模式) |
| 运动补偿精度 | 1/4 像素 | 1/4 像素 + 1/8 像素(部分场景) |
| 变换块大小 | 4x4 / 8x8 | 4x4 到 32x32 |
| 环路滤波器 | 去块滤波 | 去块滤波 + SAO(样点自适应补偿) |
| 并行处理 | Slice 级 | Tiles + WPP(波前并行处理) |
你看这个表格,最直观的变化就是 CTU。H.264 的宏块是 16x16 固定死的,遇到大块平坦区域(比如蓝天、白墙),你得拆成一堆小方块去处理,效率很低。H.265 的 CTU 最大能到 64x64,而且可以像切蛋糕一样递归划分——平坦区域用大块,纹理复杂区域切小块。这个设计,说白了就是“看菜下饭”。
个人经验:我在做监控视频编码时,发现 H.265 对静态背景的压缩效率提升特别明显。一个固定机位的摄像头,H.264 压到 4 Mbps 才勉强清晰,H.265 用 2 Mbps 就能达到同样效果。原因就是 CTU 大块划分在静态区域发挥了优势。
编码工具集概览
H.265 的工具箱比 H.264 丰富得多。我挑几个在实际部署中经常打交道的说说:
1. 帧内预测:35 种模式
H.264 只有 9 种帧内预测模式,H.265 直接干到 35 种——33 种角度模式加上 DC 和 Planar。角度模式覆盖了从水平到垂直的各个方向,能更精细地预测纹理走向。嗯,这里要注意:模式多了,编码器的决策复杂度也上去了。我在项目中遇到过编码器跑 4K 视频时,帧内预测耗时占了整个编码时间的 40% 以上。
2. 运动补偿:更灵活的划分
H.265 的运动补偿单元(PU)不再局限于 16x16 的宏块,而是支持从 64x64 到 4x4 的非对称划分。比如一个 32x16 的 PU,可以拆成 16x16 + 16x16,也可以拆成 24x16 + 8x16。这种灵活性对运动物体边缘的编码特别友好。
3. SAO:样点自适应补偿
这是 H.265 新增的滤波器,放在去块滤波之后。它的作用是修复重建图像中的像素偏差——说白了,就是让画面边缘更锐利,减少振铃效应。我刚开始接触 SAO 时觉得它可有可无,直到有一次压了一个动画片,不开 SAO 画面边缘全是“鬼影”,开了之后干净多了。
4. Tiles 和 WPP:并行编码的利器
H.264 的并行能力很弱,基本靠 Slice 切分。H.265 引入了 Tiles(将画面分成矩形区域,独立编码)和 WPP(波前并行处理,每行 CTU 可以独立启动编码)。这两个工具对多核 CPU 和 GPU 编码特别重要。我记得在部署 8K 直播系统时,如果不开启 Tiles,单路编码延迟能到 200ms 以上,开了之后直接降到 50ms 以内。
避坑指南:我曾经在一个项目中同时开启了 Tiles 和 WPP,结果编码质量反而下降了。后来排查发现,Tiles 边界会破坏运动估计的参考范围,而 WPP 的波前依赖又和 Tiles 的独立编码冲突。建议:如果编码器支持,优先用 WPP;如果追求低延迟,用 Tiles 但别切太多块(4 块以内比较安全)。
编码性能指标
衡量 H.265 编码器好不好,不能只看压缩率。我一般从四个维度来评估:
- BD-Rate / BD-PSNR: 这是业界公认的客观指标。BD-Rate 表示在相同 PSNR 下码率节省了多少。H.265 相比 H.264,BD-Rate 通常能降低 35%-50%。
- 编码速度: 单位是 fps(帧/秒)。H.265 的编码复杂度是 H.264 的 2-4 倍,所以实际部署时经常需要硬件加速。
- 解码性能: 解码器能不能跑满 4K@60fps?我见过不少编码器压出来的码流,解码器一跑就掉帧,原因是编码参数设得太激进,解码器算力跟不上。
- 主观质量: 客观指标再漂亮,人眼看着不行也是白搭。我习惯用 SSIM 和 VMAF 做辅助,但最终拍板还是靠人眼对比。
下面这张图是我自己整理的 H.265 编码知识体系,方便你快速建立全局认知:
这张图把 H.265 的知识点串起来了。你可以看到,标准演进是背景,核心差异是 H.264 到 H.265 的“升级点”,编码工具集是具体实现手段,性能指标则是我们评估编码器好坏的标尺。四个部分环环相扣,缺一不可。
一个小建议:刚接触 H.265 的同学,别急着调参数。先把 CTU 划分、帧内预测、SAO 这三个工具的原理搞明白,它们决定了 80% 的编码质量。剩下的 Tiles、WPP 这些,等遇到性能瓶颈再研究也不迟。