1. H265编码基础:HEVC标准概述、与H264的对比、编码框架与块结构

各位同学好,我是老张。做视频编码这行十几年了,从H.264一路摸爬滚打到H.265。今天咱们聊聊HEVC的基础,也就是H.265。说实话,我刚接触H.265那会儿,也被它那一堆新概念搞得头大。但后来发现,只要把核心逻辑理清楚,这东西其实没那么玄乎。

1.1 HEVC标准概述——为什么要有它?

H.265/HEVC,全称是High Efficiency Video Coding。说白了,就是比H.264更高效的压缩标准。2013年正式发布,目标是——在同等画质下,码率再砍一半。

为什么会这样?因为视频分辨率从1080p往4K、8K跑了,H.264扛不住了。我记得2015年做第一个4K项目时,用H.264压出来的码率,带宽根本撑不住。那时候我就知道,H.265是必然的选择。

HEVC的核心目标:相比H.264,在相同主观画质下,码率降低50%。

当然,代价是计算复杂度翻了好几倍。嗯,这里要注意——编码器变慢了,解码器也得跟着升级。所以H.265的普及,其实是硬件解码能力跟上之后才真正开始的。

1.2 H.265 vs H.264——到底差在哪?

我经常被问到:H.265比H.264强在哪?咱们直接看对比表,一目了然。

对比项 H.264/AVC H.265/HEVC
发布年份 2003 2013
压缩效率 基准 提升约50%
最大块尺寸 16×16(宏块) 64×64(CTU)
块划分方式 固定宏块 四叉树递归划分
帧内预测模式 9种 35种
运动补偿精度 1/4像素 1/4像素(亮度)
变换尺寸 4×4, 8×8 4×4, 8×8, 16×16, 32×32
环路滤波 去块滤波 去块滤波 + SAO
并行处理 有限 WPP, Tiles

你看,从块结构到预测模式,H.265几乎全面升级。我个人习惯把H.265看作H.264的「全面进化版」——不是小修小补,而是底层逻辑的重构。

我的经验:如果你手头有H.264的编码基础,学H.265会快很多。核心思想没变——预测+变换+量化+熵编码,只是每个环节都做得更精细了。

1.3 编码框架——整体流程长什么样?

H.265的编码框架,说白了还是那套混合编码架构。我画了一张图,帮你把整个流程串起来。

H.265/HEVC 编码框架流程图 输入视频帧 帧内/帧间预测选择 预测(帧内/帧间) 残差计算(原始-预测) DCT变换 + 量化 熵编码(CABAC) HEVC码流输出 核心流程说明 预测 → 残差 → 变换 → 量化 → 熵编码 环路滤波在重建路径 重建路径(解码端) 反量化 → 反变换 + 预测值 → 重建帧

整个流程其实就五步:预测、残差、变换、量化、熵编码。H.265在这五步上都做了升级。比如预测更精细了,变换尺寸更灵活了,量化矩阵也更智能了。

我曾经在一个项目中,为了压一个4K的纪录片,反复调参。最后发现,问题出在预测模式的选择上——H.265的35种帧内模式,选对了,码率能省一大截。

1.4 块结构——从宏块到CTU的进化

H.265最核心的变化,就是块结构。H.264用的是16×16的宏块,固定大小。H.265换成了CTU(Coding Tree Unit),最大可以到64×64。

你想想看,一个64×64的块,比16×16大了16倍。对于平坦区域(比如天空、墙面),一个大块就能搞定,码率自然省下来了。

关键概念:CTU(编码树单元)是H.265的基本处理单元,最大64×64。CTU可以递归划分为更小的CU(编码单元),划分方式采用四叉树结构。

H.265的块结构分三层:

  • CU(Coding Unit):负责预测模式的选择,帧内还是帧间。
  • PU(Prediction Unit):负责具体的预测操作,比如运动估计。
  • TU(Transform Unit):负责变换和量化,尺寸可以独立于CU。

这三层可以不一样大。举个例子:一个64×64的CU,PU可能分成两个32×64,TU又可能分成多个8×8。这种灵活性,是H.264完全做不到的。

避坑指南:我曾经在调优时,把CTU设成64×64,结果编码速度慢得离谱。后来发现,对于1080p以下的分辨率,32×32的CTU其实更划算。不是越大越好,得看场景。

1.5 四叉树划分——递归的艺术

H.265的块划分,用的是四叉树递归。什么意思?就是一个CTU,可以分成四个子块,每个子块又可以继续分,直到最小8×8。

我画个图帮你理解:

四叉树划分示例(64×64 CTU) 64×64 CTU 32×32 32×32 32×32 32×32 16×16 16×16 四叉树划分规则 1. CTU递归划分为CU 2. 每个CU可继续分4块 3. 最小CU为8×8 4. 划分深度由RD cost决定 深度0: 64×64 深度1: 32×32 深度2: 16×16 深度3: 8×8

这种递归划分的好处是——纹理复杂的地方用小块,平坦的地方用大块。编码器会算一个RD cost(率失真代价),选最优的划分方式。

注意:四叉树划分深度越深,编码越精细,但计算量也越大。实际项目中,我一般限制最大深度为3或4,再深收益就不明显了。

1.6 总结——这一章你该记住什么?

好了,咱们捋一下这章的核心:

  • H.265比H.264压缩效率高50%,但计算复杂度也高很多。
  • 编码框架还是那五步:预测、残差、变换、量化、熵编码。
  • 块结构从16×16宏块升级到64×64 CTU,支持四叉树递归划分。
  • CU、PU、TU三层分离,灵活性大幅提升。