2. AV1编码基础

AV1(AOMedia Video 1)是由开放媒体联盟(Alliance for Open Media)于2018年发布的新一代开源视频编码标准。它的设计目标非常明确:在同等主观画质下,比上一代主流标准H.265/HEVC再节省约20%~30%的码率,同时避免高额专利授权费。要理解AV1的参数调优,首先需要建立对编码器内部工作流程的整体认知,并掌握其核心术语。

2.1 编码原理:从像素到比特流的四步流水线

所有现代视频编码标准(H.264、H.265、AV1、VVC)都遵循一个共同的混合编码框架,AV1也不例外。其核心思想是:利用空间相关性(帧内预测)和时间相关性(帧间预测)去除冗余,再对残差进行变换、量化和熵编码。AV1编码器对每一帧视频的处理,可以拆解为以下四个主要阶段:

  1. 块划分(Partitioning):将一帧图像递归划分为编码块。AV1支持从128×128像素的超级块(Superblock)开始,向下四叉树划分至4×4的最小块。划分方式比H.264/H.265更灵活,增加了10:1、1:10等非对称划分。
  2. 预测(Prediction):对每个块尝试多种预测模式。帧内预测利用周围已重建像素生成参考;帧间预测则在参考帧中搜索最佳匹配块,并计算运动矢量(MV)。AV1引入了楔形预测、基于颜色的预测等新工具。
  3. 变换与量化(Transform & Quantization):将预测残差从像素域变换到频域(DCT或ADST),再通过量化器丢弃人眼不敏感的细节。量化参数(QP)直接控制压缩率与失真度的平衡。
  4. 熵编码(Entropy Coding):将量化后的系数、运动矢量、模式信息等语法元素压缩为二进制比特流。AV1采用多符号算术编码器,并支持符号间上下文建模。

编码器内部还存在一条“重建回路”:解码端需要的参考帧必须由编码器本地重建。因此,量化后的系数需要经过反量化、反变换,与预测值相加,再经过环路滤波(去块效应滤波、CDEF、超分辨率重建)后存入参考帧缓冲区。这条回路是编码器复杂度的主要来源,也是参数调优中“质量-速度”权衡的关键所在。

AV1 编码器内部流水线(混合编码框架) 输入视频帧 原始像素 YUV ① 块划分 超级块 128×128 四叉树递归划分 至 4×4 ② 预测 帧内预测(56种模式) 帧间预测(运动估计) 楔形预测 / OBMC 全局运动补偿 ③ 变换 + 量化 DCT / ADST 变换 QP 量化 → 残差系数 (有损压缩核心) ④ 熵编码 多符号算术编码 上下文建模 → 输出 AV1 比特流 重建回路(编码器内部) 反量化 + 反变换 重建残差 环路滤波 去块 / CDEF / 超分 参考帧缓存 预测残差 图例: 输入 块划分 预测 变换量化 熵编码 重建回路 参考帧反馈 注:虚线框内为编码器特有模块,解码器仅需执行反量化、反变换与预测相加。

2.2 关键术语:调优时必须理解的概念

AV1参数调优涉及大量专业术语。以下按“帧结构→块划分→变换量化→滤波”四个维度,梳理最核心的术语及其对调优的影响。

类别 术语 含义 调优影响
帧类型 关键帧(Key Frame) 可独立解码的帧,不依赖其他帧 关键帧间隔越大,压缩率越高,但随机访问点越少
帧间帧(Inter Frame) 参考其他帧进行预测的帧(P帧/B帧) B帧数量增加可提升压缩率,但增加延迟
参考帧(Reference Frame) 用于帧间预测的已重建帧 AV1最多支持8个参考帧缓冲区,多于H.264的2个
块划分 超级块(Superblock) AV1的基本编码单元,尺寸128×128或64×64 大超级块适合高分辨率、平坦区域
递归划分(Partition Depth) 从超级块向下四叉树划分的深度 划分越深,细节保留越好,但码率开销越大
变换量化 变换块(Transform Block) 残差进行变换的最小单元,最大64×64 大变换块适合平滑残差,小变换块适合纹理区域
量化参数(QP) 控制量化步长的参数,范围0~255 QP每增加6,码率约减半;QP决定画质与码率平衡
量化矩阵(Quantization Matrix) 对不同频率系数施加不同量化步长 可针对高频细节做视觉优化
环路滤波 CDEF(约束方向增强滤波) 对重建帧进行方向性去噪 强度过高会丢失纹理细节
环路恢复滤波器(Loop Restoration) 包括维纳滤波和自引导滤波 对锐利边缘重建有显著帮助

调优提示:AV1的QP范围是0~255,而H.264/H.265的QP范围是0~51。两者并非线性对应。在libaom中,--cq-level参数(范围0~63)更常用于控制恒定质量模式,与H.265的CRF概念类似。

2.3 与H.264/H.265的对比:AV1的技术优势与代价

AV1并非凭空创造,它继承了H.265的许多思想,但在多个维度上做了显著扩展。下表从编码效率、计算复杂度、技术特性三个层面进行对比。

对比维度 H.264/AVC H.265/HEVC AV1
发布年份 2003 2013 2018
编码单元 宏块 16×16 CTU 最大64×64 超级块 最大128×128
帧内预测模式 9种 35种 56种(含方向、平滑、调色板)
参考帧数量 最多2个(P帧) 最多4个 最多8个
变换类型 DCT 4×4/8×8 DCT 4×4~32×32 DCT + ADST + 恒等变换,最大64×64
运动补偿精度 1/4像素 1/4像素(亮度) 1/8像素(亮度),支持OBMC
环路滤波 去块滤波 去块滤波 + SAO 去块 + CDEF + 环路恢复
相对压缩效率 基准 比H.264省码率约40% 比H.265再省约20%~30%
编码复杂度 1× 约3~5× 约10~30×(取决于预设)
专利授权 需授权 需授权 开放免专利费

2.4 案例:从H.265迁移到AV1的编码参数对比

假设你正在将一段1080p、30fps的视频从H.265转码为AV1,目标是在保持主观画质不变的前提下,将码率从2.5 Mbps降低到约1.8 Mbps。以下是一个典型的参数映射示例:

# H.265 (x265) 原编码参数
x265 --preset medium --crf 23 --profile main10 --output out.hevc input.y4m

# AV1 (libaom) 目标编码参数
aomenc --good --cpu-used=4 --end-usage=q --cq-level=32 \
       --threads=8 --tile-columns=2 --tile-rows=1 \
       --frame-parallel=1 --enable-cdef=1 --enable-restoration=1 \
       --bit-depth=10 --input-bit-depth=10 -o out.av1 input.y4m

参数解读:

  • --cpu-used=4:控制编码速度与效率的平衡,数值越大越快但压缩率越低。4是“good”模式下较常用的折中点。
  • --cq-level=32:恒定质量模式,相当于x265的CRF。32是1080p内容常见的起点,可根据画质主观反馈微调。
  • --tile-columns=2 --tile-rows=1:将帧划分为4×2个瓦片(Tile),便于并行编码,对4K以上分辨率尤为重要。
  • --enable-cdef=1 --enable-restoration=1:开启AV1特有的环路滤波工具,对去除振铃效应和恢复锐利边缘有明显帮助。

常见误区:不要简单地将H.265的CRF值直接映射为AV1的cq-level。两者量化尺度不同,且AV1的率失真优化更激进。建议从cq-level=30开始,以2为步长上下调整,通过主观对比确定最优值。另外,--cpu-used过低(如0或1)会导致编码速度急剧下降,但压缩率提升有限,不适合日常转码场景。

2.5 误区与复盘:AV1调优中的常见陷阱

在实际项目中,工程师从H.264/H.265迁移到AV1时,常犯以下错误:

  • 误区一:盲目追求最低码率。AV1在极低码率下容易出现“涂抹感”(细节丢失),尤其是快速运动的场景。调优时应结合视频内容类型,对动作片、动画片、纪录片分别设置不同的码率目标。
  • 误区二:忽略色彩深度。AV1对10bit内容支持更好,相同码率下10bit的banding(色带)伪影远少于8bit。如果源视频是8bit,建议先升级到10bit再编码。
  • 误区三:瓦片(Tile)设置不当。瓦片数量过多会降低压缩效率(每个瓦片独立熵编码,失去跨瓦片上下文建模),但能提升并行度。对于1080p,4个瓦片通常足够;4K建议8~16个瓦片。
  • 误区四:忽略帧类型决策。AV1的帧类型决策(关键帧间隔、B帧层级)对压缩率影响巨大。默认设置通常偏向保守,手动调整--kf-max-dist和--bframes可进一步优化。

复盘建议:每次调优实验都应记录完整的编码参数、目标码率、实际码率、PSNR/SSIM/VMAF指标以及主观观感。建议使用VMAF(Video Multi-Method Assessment Fusion)作为客观质量参考,但最终以人眼主观判断为准。AV1的调优空间很大,但每次只改变一个参数,才能准确归因效果变化。