1. H265编码基础:H265/HEVC编码标准概述、与H264的对比、编码原理简介

各位同学好,我是老张。在流媒体这行摸爬滚打了十几年,从最早的MPEG-2到H.264,再到现在的H.265/HEVC,可以说见证了视频编码技术的几次大换代。今天咱们聊的H.265,说白了就是目前业界公认的下一代主流编码标准。

我记得2013年刚接触HEVC时,第一反应是「这玩意儿真能比H.264省一半码率?」后来在几个实际项目中跑过之后,嗯,确实没吹牛。但代价也很明显——编码复杂度翻了好几倍。所以这一章,我们先打好基础,把H.265的来龙去脉搞清楚。

1.1 什么是H.265/HEVC?

H.265,官方名称叫HEVC(High Efficiency Video Coding),是ITU-T VCEG和ISO/IEC MPEG联合开发的视频编码标准。2013年正式发布,目标是接替H.264/AVC。

它的核心诉求很简单:在同等画质下,码率比H.264降低50%左右。你想想看,这意味着什么?同样的带宽,能传两倍清晰度的视频;同样的存储空间,能存两倍时长的内容。

关键数据对比:

  • H.264/AVC:2003年发布,统治了流媒体行业整整十年
  • H.265/HEVC:2013年发布,编码效率提升约50%
  • 支持分辨率:最高可达8K(8192×4320)
  • 主要应用:4K/8K视频、直播、视频会议、监控

1.2 H.265 vs H.264:到底强在哪?

很多刚入行的朋友问我:「老张,H.265和H.264差别大吗?」我的回答是:架构上是一脉相承的,但细节上几乎全改了。下面这张表是我自己整理的,你一看就明白。

对比维度 H.264/AVC H.265/HEVC
编码单元 宏块(16×16) 编码树单元CTU(最大64×64)
帧内预测方向 9种 35种
运动补偿精度 1/4像素 1/4像素(亮度)/1/8像素(色度)
变换块大小 4×4 / 8×8 4×4 ~ 32×32
去块滤波 基于宏块边界 基于编码块边界 + SAO
并行处理 有限(Slice/FMO) Tiles + WPP + 波前并行
码率节省 基准 约35%~50%

我个人的经验是:H.265最大的突破在于引入了灵活的块划分结构。H.264死板地用16×16宏块,而H.265允许从64×64一直划分到4×4。这就好比以前只能用标准砖头砌墙,现在可以自由切割,自然更省材料。

避坑指南:我曾经在一个4K直播项目中,直接拿H.264的编码参数套到H.265上,结果画质惨不忍睹。后来才发现,H.265的量化参数(QP)取值范围和H.264不一样,需要重新调优。切记:不要想当然地平移参数。

1.3 编码原理简介

视频编码的基本原理,说白了就是「找冗余、去冗余」。H.265沿用了混合编码框架,但每个模块都做了升级。我画了一张流程图,帮你理清整体脉络。

H.265/HEVC 混合编码框架 输入视频帧 帧内预测 / 帧间预测 + 运动补偿 35种帧内方向 / 1/4像素运动补偿 变换 + 量化 DCT/DST 4×4 ~ 32×32 / QP调节 熵编码(CABAC) 上下文自适应二进制算术编码 H.265 码流输出 环路滤波 去块滤波 + SAO 说明:环路滤波后的重建帧会作为下一帧的参考帧,形成闭环预测 这是H.265相比H.264在画质上的重要改进点

整个流程我拆成几个关键点来讲:

1.3.1 块划分结构

这是H.265最核心的变化。它用编码树单元(CTU)替代了H.264的宏块。CTU最大可以到64×64,然后递归四叉树划分,直到4×4。我习惯把这个过程想象成「切蛋糕」——大块区域用大块编码,细节区域切小块,效率自然高。

CTU划分示例:

  • CTU大小:64×64(默认)
  • 划分深度:0~3级
  • 最小CU:8×8
  • 预测单元(PU):支持非对称划分
  • 变换单元(TU):独立于CU,最大32×32

1.3.2 帧内预测

H.265的帧内预测从H.264的9种方向扩展到了35种。多了这么多方向,对平坦区域和纹理复杂区域的预测精度提升很明显。我在做监控视频编码时发现,对于静止背景,H.265的帧内预测能省下将近40%的码率。

1.3.3 帧间预测与运动补偿

运动补偿这块,H.265支持了更灵活的参考帧管理和更精细的插值滤波。亮度分量还是1/4像素精度,但色度提升到了1/8像素。说白了,运动估计更准了,残差更小了,码率自然就降下来了。

1.3.4 环路滤波

H.265在去块滤波(Deblocking Filter)之外,新增了样点自适应补偿(SAO)。SAO的作用是修正重建像素的偏差,减少振铃效应。我记得第一次在示波器上看SAO前后的波形对比,确实平滑了不少。

注意:SAO虽然能提升画质,但也会增加解码器的计算负担。在低端嵌入式设备上,我建议根据实际平台性能决定是否开启。曾经有个项目,在树莓派上硬解H.265,开了SAO后帧率直接掉了一半。

1.4 为什么选择H.265?

说了这么多,总结一下H.265的核心优势:

  1. 码率节省明显:同等画质下比H.264省30%~50%的码率
  2. 支持更高分辨率:原生支持4K/8K,H.264到4K已经很吃力了
  3. 并行编码能力强:Tiles和WPP让多核CPU利用率大幅提升
  4. 主观画质更好:SAO和更灵活的块划分让画面更干净

当然,代价也很现实:编码复杂度是H.264的2~4倍,专利授权问题也比较复杂。但如果你要做4K/8K流媒体,H.265几乎是绕不开的选择。

个人建议:刚开始接触H.265时,别急着上高复杂度配置。先用x265的预设参数跑通流程,再逐步调优。我一般从"medium"预设开始,然后根据实际场景调整QP和参考帧数量。记住:编码器参数没有银弹,只有适合你场景的配置。