2. H.265编码基础:H.265/HEVC标准概述、与H.264的对比、编码原理简介

2.1 H.265/HEVC标准概述

H.265,正式名称为高效视频编码(High Efficiency Video Coding,HEVC),是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的视频编码联合协作小组(JCT-VC)制定的视频压缩标准,于2013年正式发布。作为H.264/AVC的继任者,H.265的核心设计目标是在同等视频质量下将码率降低约50%,同时支持最高8K(8192×4320)的分辨率。

H.265标准定义了多种档次(Profile)和级别(Level),以适应不同应用场景的需求。常见的档次包括:

  • Main Profile:支持8bit色深、4:2:0色度采样,适用于绝大多数消费级视频应用。
  • Main 10 Profile:支持10bit色深,能显著减少带状伪影(Banding Artifact),是HDR视频的基础。
  • Main Still Picture Profile:面向静态图像编码,基于单帧编码。

在硬件加速配置中,我们通常需要确认编码器支持的是Main Profile还是Main 10 Profile,这直接决定了视频的色深和HDR元数据的承载能力。

2.2 H.265与H.264的核心对比

理解H.265与H.264的差异,是正确配置硬件编码参数的前提。两者在编码架构上同属混合编码框架(预测+变换+熵编码),但在具体技术细节上存在显著演进。下表从关键维度进行了对比:

对比维度 H.264/AVC H.265/HEVC
编码单元 宏块(Macroblock),固定16×16像素 编码树单元(CTU),最大64×64,支持四叉树递归划分
帧内预测方向 9种预测模式 35种预测模式(含Planar、DC和33种角度模式)
运动补偿精度 1/4像素亮度插值,运动补偿块最小4×4 1/4像素亮度插值(改进滤波器),运动补偿块最小4×4,但支持非对称划分(AMP)
变换块大小 4×4和8×8 4×4到32×32自适应选择
去块滤波 基于宏块边界 基于编码块和变换块边界,并增加SAO(样点自适应补偿)
参考帧管理 参考帧列表(DPB) 参考帧集(RPS),更灵活,支持多参考帧和时域分层
熵编码 CAVLC / CABAC CABAC(改进上下文模型,并行处理能力增强)
码率节省 基准 同等质量下码率节省约50%

从硬件编码的角度看,H.265带来的最大挑战是计算复杂度的大幅提升。CTU的四叉树划分、35种帧内预测模式的选择、SAO滤波等模块,都需要更强大的并行计算能力。因此,硬件编码器(如Intel Quick Sync Video、NVIDIA NVENC、AMD VCN)在H.265编码中引入了专门的硬件流水线来加速这些模块。

2.3 H.265编码原理简介

H.265编码流程延续了“预测-变换-量化-熵编码”的混合框架,但每一步都进行了深度扩展。理解这些原理有助于我们在硬件编码时选择合适的预设和参数。

编码的核心流程如下:

  1. 块划分(Block Partitioning):每帧图像被划分为编码树单元(CTU),默认大小为64×64。每个CTU通过四叉树递归划分为编码单元(CU),最小可到8×8。CU是预测的基本单位。
  2. 帧内预测(Intra Prediction):对于I帧或帧内编码的CU,利用当前帧已重建的相邻像素进行预测。H.265提供35种预测模式,包括Planar(平面)、DC(直流)和33种不同角度的方向预测。硬件编码器通常通过绝对误差和(SAD)或率失真优化(RDO)快速选择最优模式。
  3. 帧间预测(Inter Prediction):对于P帧或B帧中的CU,在参考帧中搜索最佳匹配块。H.265支持更灵活的运动矢量预测(MVP),包括时域运动矢量预测(TMVP)和空间运动矢量预测。硬件编码器通常实现整像素搜索和分像素搜索两级流水线。
  4. 变换与量化(Transform & Quantization):预测残差经过离散余弦变换(DCT)或离散正弦变换(DST,仅用于4×4帧内亮度块),变换块大小从4×4到32×32自适应。量化步长由量化参数(QP)控制,QP范围通常为0~51。
  5. 环路滤波(Loop Filtering):包括去块滤波(DBF)和样点自适应补偿(SAO)。SAO是H.265新增的模块,通过为每个CTU选择边带偏移(BO)或边缘偏移(EO)模式来减少振铃伪影。
  6. 熵编码(Entropy Coding):使用CABAC对量化后的系数、运动矢量、预测模式等语法元素进行编码。H.265的CABAC支持上下文自适应和并行编码(如WPP、Tile)。

下图展示了H.265编码器的整体信号流与核心模块关系,这也是硬件编码器内部流水线设计的逻辑蓝图:

H.265/HEVC 编码器信号流与核心模块 输入视频帧 YUV 原始数据 CTU 划分 64×64 → 8×8 预测模块 帧内预测 35种模式 帧间预测 MV搜索/补偿 变换 + 量化 DCT/DST + QP 熵编码 CABAC H.265 码流 输出 Bitstream 重建 + 反变换 残差重建 环路滤波 去块滤波(DBF) + SAO 参考帧 DPB 缓存 图例说明 前向编码数据流 重建环路数据流 参考帧反馈(帧间预测) 帧内预测反馈(空间相邻像素)

图中展示了H.265编码器的两条关键环路:前向编码路径(输入帧→CTU划分→预测→变换量化→熵编码→码流)和重建环路(反变换重建→环路滤波→参考帧→反馈至预测模块)。硬件编码器(如NVENC、QSV)正是围绕这两条环路设计专用ASIC流水线,以降低延迟并提高吞吐量。

2.4 硬件编码中的关键参数与误区

在配置H.265硬件编码时,有几个参数与编码原理直接相关,也是常见的配置误区所在:

关键参数速查

  • QP(量化参数):QP越低,画质越好,码率越高。硬件编码中通常使用恒定QP(CQP)或基于目标码率的速率控制(VBR/ABR)。
  • GOP(Group of Pictures)结构:决定I帧、P帧、B帧的排列。硬件编码器通常支持预设的GOP模板,如IBBBP或IPPP。
  • Lookahead(预分析):硬件编码器通过预分析帧来优化码率分配,但会增加延迟。实时编码场景下需权衡。
  • SAO开关:部分硬件编码器允许关闭SAO以降低功耗,但会损失约2%~5%的压缩效率。

常见误区:误以为H.265硬件编码只需设置码率即可。实际上,若不根据内容类型(如屏幕录制、摄像头画面、电影)调整GOP大小和预测结构,会出现码率浪费或画质波动。例如,屏幕录制内容运动少、纹理锐利,应增大GOP间隔并开启SAO;而摄像头画面噪声较多,应适当提高QP并启用去噪预处理。

2.5 案例:从H.264迁移到H.265的编码参数调整

假设我们有一个1080p30的直播流,原使用H.264编码,码率4 Mbps。迁移到H.265后,目标码率可降至2~2.5 Mbps。但直接沿用H.264的编码参数(如GOP=250、B帧数=3)可能不是最优的。建议按以下步骤调整:

  1. 将CTU大小保持默认64×64,无需手动修改。
  2. 将GOP调整为帧率的2倍(即60帧一个I帧),减少I帧开销。
  3. 开启B帧(通常硬件编码器支持最多3个连续B帧),提升压缩率。
  4. 启用CABAC熵编码(硬件编码器默认启用,无需额外配置)。
  5. 设置VBV缓冲区大小(如码率的2倍),防止码率尖峰。

通过上述调整,在同等主观画质下,码率可从4 Mbps降至约2.2 Mbps,节省约45%的带宽。这正是H.265标准设计目标的实际体现。