1. H265/HEVC 标准概述:视频编码发展史、H265 与 H264 对比、H265 核心技术优势
各位同学好,我是老张。做视频编码这行十几年了,从当年的 MPEG-2 一路摸爬滚打过来。今天咱们聊聊 H265,也就是 HEVC。
说实话,我刚接触 H265 那会儿,第一反应是「这玩意儿真复杂」。但用久了你会发现,它的设计思路其实很清晰——就是为了在同样画质下,把码率砍掉一半。
1.1 视频编码发展史:从 H.261 到 H.266
视频编码标准的发展,说白了就是一场「压缩效率」的军备竞赛。我整理了一个简表,帮你快速建立时间线概念:
| 标准 | 发布年份 | 核心应用 | 压缩效率提升 |
|---|---|---|---|
| H.261 | 1990 | ISDN 视频会议 | 基准 |
| MPEG-2 / H.262 | 1995 | DVD、数字电视 | 约 2x |
| H.263 | 1996 | 视频通话、移动视频 | 约 1.5x |
| MPEG-4 / H.264 | 2003 | 蓝光、流媒体、YouTube | 约 2x |
| H.265 / HEVC | 2013 | 4K/8K、HDR、直播 | 约 2x |
| H.266 / VVC | 2020 | 8K、VR、云游戏 | 约 1.5x |
你看,每隔十年左右,压缩效率就翻一番。H265 正好卡在 4K 视频爆发的节点上。我记得 2014 年第一次用 H265 压 4K 测试序列时,那个码率曲线让我眼前一亮——同样 20Mbps,H264 已经糊成一片,H265 还能保持不错的细节。
核心规律:每一代新标准的目标都是「在同等主观质量下,码率减半」。H265 做到了,而且做得相当扎实。
1.2 H265 与 H264 的核心差异
很多初学者会问:「H265 不就是 H264 的升级版吗?」嗯,这么说也对,但不全对。它俩的底层框架都是混合编码(预测+变换+熵编码),但 H265 在每一个模块上都做了「手术级」的改进。
我挑几个最关键的差异点,也是我在项目中踩过坑的地方:
| 对比维度 | H.264 / AVC | H.265 / HEVC | 我的实际感受 |
|---|---|---|---|
| 宏块/CTU 尺寸 | 16x16 固定宏块 | 64x64 最大 CTU,支持四叉树递归划分 | 大块平坦区域省码率效果明显 |
| 帧内预测方向 | 9 种模式 | 35 种模式(含 33 个角度) | 纹理细节保留更好 |
| 运动补偿精度 | 1/4 像素 | 1/4 像素 + 1/8 像素(部分) | 运动场景更平滑 |
| 变换块尺寸 | 4x4 / 8x8 | 4x4 ~ 32x32 | 高频细节压缩更灵活 |
| 环路滤波 | 去块滤波 (DBF) | DBF + SAO(样点自适应补偿) | SAO 对振铃效应改善很大 |
| 并行处理 | Slice 级 | Tiles + WPP(波前并行处理) | 多核 CPU 利用率直接拉满 |
避坑提示:我曾经在一个 4K 直播项目中,直接用 H264 的编码思路去调 H265 的 CTU 划分,结果码控完全失控。后来才意识到,H265 的递归四叉树结构对码率分配的影响比 H264 大得多——你得让编码器有足够的计算资源去「试错」。
1.3 H265 核心技术优势
H265 能实现「码率减半、画质不变」,靠的不是单一技术,而是一套组合拳。我画了一张图,帮你理清这些技术之间的关系:
这张图把 H265 的四大技术支柱串起来了。你想想看,从块划分到预测、变换、滤波,每个环节都在「压榨」视频中的冗余信息。
1.3.1 灵活块结构:CTU 与四叉树划分
H264 用的是 16x16 的宏块,遇到大面积的天空或墙面,一个宏块里全是相似像素,但编码器还是得按 16x16 去处理,浪费了不少码字。
H265 引入了 CTU(编码树单元),最大可以到 64x64。编码器会根据图像内容,用四叉树递归地把 CTU 切分成更小的 CU(编码单元)。
关键点:平坦区域用大 CU(省码率),纹理复杂区域用小 CU(保细节)。这种自适应的块划分,是 H265 省码率的第一大功臣。
我记得有一次优化监控视频的编码参数,场景是停车场,大部分区域是静止的。我把 CTU 最大深度从 4 改成 3,码率直接降了 12%,画质几乎没变。这就是灵活块结构的威力。
1.3.2 增强的帧内预测:35 种模式
H264 只有 9 种帧内预测模式,说白了就是 8 个方向加一个 DC。H265 把这个数量扩展到了 35 种,包括 33 个角度方向、DC 和 Planar。
角度方向多了,预测就更准。尤其是那些带有斜向纹理的图像,H264 经常预测不准,残差很大;H265 可以选一个更接近真实纹理方向的角度,残差就小得多。
我的经验:在编码动画片或 UI 录屏时,H265 的帧内预测优势特别明显。因为这些内容经常有大面积的纯色和锐利边缘,35 种模式能更好地拟合这些特征。我曾经压过一个 1080p 的 UI 录屏,H265 比 H264 省了 40% 的码率,而且边缘没有振铃。
1.3.3 大尺寸变换与 SAO 滤波
变换方面,H265 支持从 4x4 到 32x32 的 DCT 变换,还针对帧内预测残差引入了 4x4 DST。大尺寸变换的好处是能量集中度更高——低频分量集中在左上角,高频分量可以更狠地量化掉。
SAO(样点自适应补偿)是 H265 新增的环路滤波技术。H264 只有去块滤波(DBF),处理不了块效应之外的失真。SAO 能对重建图像的像素值做「补偿」,减少振铃效应和条带噪声。
注意:SAO 虽然能提升主观质量,但它需要额外的码率来传输补偿参数。在极低码率场景下,SAO 的增益可能会被码率开销抵消。我曾经在 500kbps 的移动端直播中关闭了 SAO,反而得到了更稳定的码控。
1.3.4 并行处理:Tiles 与 WPP
H264 的并行能力很弱,基本只能靠 Slice 切分。H265 引入了 Tiles(瓦片)和 WPP(波前并行处理)。
Tiles 把一帧图像分成矩形区域,每个 Tile 可以独立编码解码。WPP 则利用 CTU 行的依赖关系,让多核 CPU 同时处理多行 CTU。
我在做 8K 实时编码器时,WPP 是必须开启的。不开 WPP,单核性能根本扛不住 8K 的编码复杂度;开了之后,8 核 CPU 的利用率能跑到 90% 以上。
1.4 总结:H265 到底强在哪?
说了这么多,其实可以归结为一句话:H265 用更复杂的计算,换来了更低的码率和更好的画质。
它的复杂度大约是 H264 的 3-5 倍,但码率节省了 50%。在 4K/8K 时代,这个 trade-off 是完全值得的——带宽和存储的成本远高于计算成本。
一句话记住:H265 = 更灵活的块划分 + 更准的预测 + 更大的变换 + 更聪明的滤波。这四个组合拳,打出了视频编码的新高度。