AOMedia 联盟正式发布了 AV2 (AOMedia Video 2) 视频编码标准的 v1.0 规范,这是继 2018 年 AV1 发布以来最重要的开放媒体标准事件。AV2 的目标是在 AV1 基础上再提升约 30% 的压缩效率,意味着同样画质的视频文件体积更小,或者同样带宽下传输更高质量的画面——这对每一个处理视频的开发者都有直接影响。
如果你正在做视频流媒体、WebRTC 实时通信、在线教育、直播平台,甚至只是在网页中嵌入视频播放器,AV2 都将是你未来 2-3 年必须掌握的技术。本文将从编码技术原理、与竞品标准对比、实际编码操作三个维度,帮你全面理解 AV2 并提前做好迁移准备。
🔬 一、AV2 技术架构与核心改进
1.1 从 AV1 到 AV2:为什么要升级?
AV1 自 2018 年发布以来,已经在全球范围内部署:YouTube 用它传输每天数十亿小时的视频,Netflix 用它节省了约 20% 的带宽成本,Apple 从 macOS Ventura 开始原生支持 AV1 硬解。但随着 4K/8K 超高清内容爆发、HDR(高动态范围)成为标配、AI 生成视频涌现,AV1 的编码工具开始显得力不从心。
AV2 不是简单的"AV1 加强版",而是在编码工具箱层面做了系统性升级。下表列出了 AV2 相对于 AV1 的核心改进:
| 特性维度 | AV1 | AV2 | 改进意义 |
|---|---|---|---|
| 压缩效率(同画质码率) | 基准 | 降低约 30% | 同画质省 30% 带宽 |
| 帧内预测模式数 | 56 种 | 80+ 种 | 边缘/纹理预测更精准 |
| 帧间预测 | 单参考帧/复合预测 | 多参考帧 + 改进加权预测 | 运动场景更流畅 |
| 分块策略 | 递归四叉树 + AB 检测 | 增强多类型分区树 | 复杂场景编码效率更高 |
| 变换编码 | 4x4 到 64x64 DCT/ADST/Identity | 更多变换核 + 自适应变换选择 | 残差能量压缩更充分 |
| 环路滤波 | Deblock + CDEF + Restoration | 增强 CDEF + 新增滤波工具 | 重建质量更高 |
| 屏幕内容编码 | 基础支持(Palette/IBC) | 大幅增强(更智能的 IBC/ELF) | 屏幕共享、游戏画面更清晰 |
| HDR/WCG 支持 | 基础支持 | 原生增强 | 色彩更丰富、层次更分明 |
| Film Grain 合成 | 支持 | 改进颗粒模型 | 胶片感视频更自然 |
| 最大分辨率 | 65536×65536 | 65536×65536 | 保持不变 |
📌 记住: 压缩效率提升 30% 意味着什么?假设你的视频平台每天传输 1PB 数据,带宽成本约 $0.05/GB,切换到 AV2 后每年可节省约 $5.5M 的带宽费用。这不是技术指标的微调,而是基础设施层面的质变。
1.2 五项关键技术深度解析
① 增强的多类型分区树(Enhanced Partitioning)
AV1 使用递归四叉树(Quadtree)加二叉树(Binary Tree)和三叉树(Ternary Tree)进行 CTU(编码树单元)分区。AV2 在此基础上引入了更灵活的分区策略,允许更深层次的嵌套和更多分区形状组合。
AV1 分区:QT + BT + TT(最大深度受限制)
AV2 分区:QT + BT + TT + 扩展嵌套深度 + 新增分区类型
实际效果:对于包含复杂运动边界的区域(比如一个人在快速移动的手臂边缘),AV2 可以用更精确的分区来描述运动边界,减少块效应(Blocking Artifacts)和振铃效应(Ringing Artifacts)。
② 改进的帧间预测(Enhanced Inter Prediction)
AV2 扩展了参考帧管理,支持更多参考帧的同时引入了改进的加权预测机制。在处理以下场景时效果尤为明显:
- ✅ 快速运动场景(体育赛事、动作电影)
- ✅ 光照突变场景(舞台灯光变化、日夜转换)
- ✅ 遮挡与去遮挡区域(物体移入/移出画面)
③ 增强的屏幕内容编码(Screen Content Coding)
这是对开发者最实用的改进之一。AV2 大幅增强了帧内块拷贝(Intra Block Copy, IBC)和边缘学习滤波(Edge Learning Filter, ELF)工具,专门优化以下场景:
- 远程桌面/屏幕共享:文字锐利、线条清晰
- 游戏录制/直播:UI 元素不再模糊
- 代码演示/教程:代码高亮保持完整
💡 提示: 如果你的产品涉及屏幕共享或远程协作功能(如 Zoom、Teams、飞书的屏幕共享),AV2 的屏幕内容编码改进将直接提升用户体验,尤其是在共享代码编辑器或文字文档时。
④ 自适应变换选择(Adaptive Transform Selection)
AV1 已经支持 DCT、ADST、Identity 等多种变换核,但选择策略相对保守。AV2 引入了更多变换核类型,并允许在同一编码单元内对不同子块使用不同的变换组合。这就像从"只能选大中小号衣服"升级到"量身定制"——每块像素区域都能找到最适合的变换方式。
⑤ 改进的 Film Grain 合成
很多电影和纪录片带有胶片颗粒感(Film Grain),传统编码器需要花费大量码率来保留这些颗粒。AV1 的 Film Grain Synthesis 已经做得不错——在编码端去除颗粒、在解码端用参数化模型重新合成。AV2 进一步改进了颗粒模型的参数化能力,支持更复杂的颗粒模式,在极低码率下也能保持自然的胶片质感。
⚔️ 二、AV2 vs H.266/VVC:开放标准与商业标准的终极对决
2.1 两大阵营的格局
视频编码标准的世界一直存在两个阵营:
| 对比维度 | AV2 (AOMedia) | H.266/VVC (ITU-T/ISO) |
|---|---|---|
| 发布时间 | 2026 年 5 月 | 2020 年 7 月 |
| 授权模式 | 完全免费、开源 | 专利授权(FRAND 条款) |
| 主导方 | Google、Apple、Microsoft、Netflix、Meta、Amazon、Intel | Qualcomm、Ericsson、Samsung、华为、Philips |
| 目标压缩效率提升 | 较 AV1 提升约 30% | 较 H.265 提升约 50% |
| 编码器成熟度 | 初期(参考编码器可用) | 中期(已有多个生产级编码器) |
| 浏览器支持 | 预计 2027-2028 起逐步支持 | 无浏览器原生支持 |
| 硬件解码支持 | 预计 2027 起新芯片搭载 | 部分高端芯片已支持 |
| 典型应用场景 | Web 视频、流媒体、RTC | 广播电视、蓝光光盘、专业制作 |
2.2 为什么 AV2 对开发者更友好?
从开发者的实际视角来看,AV2 的优势不只在压缩效率:
① 零成本部署
H.266/VVC 的专利池由 MPEG LA、Access Advance 和 Velos Media 三家管理,授权费用结构复杂,涉及编码器、解码器和内容传输三个环节都要付费。这意味着如果你的产品使用 VVC 编码,每一路视频流都可能产生授权费。
AV2 继承了 AV1 的完全免费、开源策略。AOMedia 成员(几乎涵盖了所有科技巨头)承诺不对 AV2 的实现收取专利费。
② 浏览器原生支持可期
回顾 AV1 的浏览器支持时间线:
- 2018 年:AV1 规范发布
- 2019 年:Chrome 70 开始支持 AV1 解码(软件解码)
- 2020 年:Firefox 67 支持
- 2022 年:Safari 16 (macOS Ventura) 支持硬件加速解码
- 2023 年:iOS 16+ 支持 AV1 硬件解码
AV2 作为 AOMedia 标准,预计会遵循类似的时间线。考虑到 Chrome 的激进策略,很可能在 2027 年就会有初步的软件解码支持。
⚡ 关键结论: H.266/VVC 虽然在纯压缩效率上可能领先,但其复杂的专利授权和缺乏浏览器支持使得 Web 开发者几乎无法使用它。AV2 将是 Web 生态中下一个主流视频编码标准。
③ FFmpeg 生态支持
AV1 的编码器生态已经非常成熟:
libaom:AOMedia 参考编码器,质量最好但速度最慢SVT-AV1:Intel 主导,专为生产环境优化,速度/质量平衡最佳rav1e:Rust 实现的编码器,注重安全性和可移植性
AV2 预计将沿用类似模式:先出参考编码器,再出生产级优化编码器。FFmpeg 通常是最先集成新编码器的工具。
🔧 三、开发者实战:从 AV1 编码迁移到 AV2
3.1 当前阶段:用 FFmpeg 进行 AV1 编码(为 AV2 迁移做准备)
AV2 的生产级编码器还在开发中,但你今天就可以通过优化 AV1 编码流程来为将来的迁移做准备。以下是使用 FFmpeg + SVT-AV1 的生产级编码配置:
# 使用 SVT-AV1 编码 1080p 视频,VBR 模式,CRF 30
# 适合流媒体点播场景(非实时)
ffmpeg -i input.mp4 \
-c:v libsvtav1 \
-preset 6 \
-crf 30 \
-svtav1-params "tune=0:film-grain=8:film-grain-denoise=1" \
-c:a libopus -b:a 128k \
-movflags +faststart \
output_av1.webm
参数解析:
-preset 6:编码速度/质量平衡点(0 最慢最清晰,13 最快最模糊),生产环境推荐 5-8-crf 30:恒定质量因子,数值越小质量越高(推荐范围 25-35)tune=0:优化视觉质量(0=VQ 视觉质量,1=PSNR 客观指标)film-grain=8:Film Grain 合成强度(0=禁用,50=最大)film-grain-denoise=1:编码前先降噪,配合 Film Grain 合成获得更好的低码率效果
💡 提示:
-preset参数是 SVT-AV1 最关键的调优参数。preset 6 在 1080p 内容上编码速度约为实时 2-3 倍(8 核 CPU),质量已经非常接近 libaom 的cpu-used=4,但速度快 10 倍以上。
3.2 生产级自适应码率(ABR)编码方案
实际的视频流媒体平台不会只用一个码率,而是需要生成多个码率层级供播放器自适应切换。以下是完整的 ABR 编码方案:
#!/bin/bash
# av1_abr_encode.sh - AV1 多码率自适应编码脚本
# 输出适合 HLS/DASH 播放的多码率片段
INPUT="$1"
OUTPUT_DIR="$2"
mkdir -p "$OUTPUT_DIR"
# 定义码率层级:分辨率、CRF、最大码率
declare -A LAYERS=(
["1080p"]="1920:1080:28:5000k"
["720p"]="1280:720:30:2500k"
["480p"]="854:480:32:1200k"
["360p"]="640:360:34:600k"
)
for LAYER in "${!LAYERS[@]}"; do
IFS=':' read -r WIDTH HEIGHT CRF MAXRATE <<< "${LAYERS[$LAYER]}"
echo "Encoding $LAYER (${WIDTH}x${HEIGHT}, CRF $CRF)..."
ffmpeg -i "$INPUT" \
-vf "scale=${WIDTH}:${HEIGHT}:force_original_aspect_ratio=decrease,pad=${WIDTH}:${HEIGHT}:(ow-iw)/2:(oh-ih)/2" \
-c:v libsvtav1 \
-preset 6 \
-crf "$CRF" \
-maxrate "$MAXRATE" \
-bufsize "$MAXRATE" \
-svtav1-params "tune=0:film-grain=4:film-grain-denoise=1:scd=1" \
-g 240 \
-keyint_min 240 \
-c:a libopus -b:a 64k \
-f mp4 \
"${OUTPUT_DIR}/${LAYER}.mp4"
done
echo "All layers encoded. Output in $OUTPUT_DIR/"
关键参数说明:
-g 240 -keyint_min 240:关键帧间隔设为 240 帧(10 秒 @24fps),这是 HLS 规范推荐的 segment 时长scd=1:启用场景切换检测(Scene Change Detection),在场景切换时自动插入关键帧-bufsize设为与-maxrate相同:确保瞬间码率不会超过最大值,适合网络传输
3.3 前端播放器适配与降级策略
当 AV2 浏览器支持逐步到来时,你需要一个优雅的降级方案。以下是使用 HTML5 <video> 元素的多编码格式回退方案:
<!-- 多编码格式降级播放方案 -->
<!-- 浏览器会自动选择第一个支持的 source -->
<video controls preload="metadata" width="100%">
<!-- 未来:AV2 格式 -->
<source src="video_av2.webm" type="video/webm; codecs=av02" />
<!-- 当前:AV1 格式(WebM 容器) -->
<source src="video_av1.webm" type="video/webm; codecs=av01.0.08M.08" />
<!-- 回退:H.264 格式(MP4 容器,兼容性最广) -->
<source src="video_h264.mp4" type="video/mp4; codecs=avc1.640028" />
<p>你的浏览器不支持 HTML5 视频播放。</p>
</video>
在 JavaScript 中,你还可以用代码检测编码支持能力:
// 检测浏览器对各种视频编码的支持能力
async function checkVideoCodecSupport() {
const codecs = {
'AV2': 'video/webm; codecs=av02',
'AV1': 'video/webm; codecs=av01.0.08M.08',
'H265': 'video/mp4; codecs=hvc1.1.6.L93.B0',
'H264': 'video/mp4; codecs=avc1.640028',
'VP9': 'video/webm; codecs=vp09.00.10.08',
};
const results = {};
for (const [name, codecString] of Object.entries(codecs)) {
try {
// 使用 MediaSource.isTypeSupported 检测解码能力
const supported = MediaSource.isTypeSupported(codecString);
// 进一步检测是否支持硬件加速(通过 MediaCapabilities API)
let hwAccel = false;
if (supported && 'mediaCapabilities' in navigator) {
const result = await navigator.mediaCapabilities.decodingInfo({
type: 'media-source',
video: {
contentType: codecString,
width: 1920,
height: 1080,
bitrate: 5000000,
framerate: 30,
},
});
hwAccel = result.powerEfficient; // 硬件加速且省电
}
results[name] = { supported, hardwareAccelerated: hwAccel };
} catch (e) {
results[name] = { supported: false, hardwareAccelerated: false, error: e.message };
}
}
return results;
}
// 使用示例
checkVideoCodecSupport().then(results => {
console.table(results);
// 根据支持情况选择最佳编码格式
const bestCodec = Object.entries(results)
.filter(([, info]) => info.supported)
.sort((a, b) => {
// 优先选择硬件加速的编码
const order = ['AV2', 'AV1', 'H265', 'VP9', 'H264'];
return order.indexOf(a[0]) - order.indexOf(b[0]);
})[0];
if (bestCodec) {
console.log(`最佳编码: ${bestCodec[0]}`);
}
});
⚠️ 警告: MediaCapabilities API 的
powerEfficient字段非常重要——软件解码虽然能播放,但会严重消耗 CPU 和电池。在移动设备上,始终优先使用硬件加速解码的编码格式。如果 AV2 暂无硬件解码支持,宁可用 AV1 硬解也不要 AV2 软解。
3.4 视频编码迁移检查清单
从 AV1 迁移到 AV2 时,按以下清单逐项检查:
| 检查项 | 说明 | 优先级 |
|---|---|---|
| 编码器版本确认 | FFmpeg 是否已集成 libsvtav2 或 libaom-av2 | 🔴 高 |
| 容器格式兼容 | WebM/Matroska 是否支持 AV2 track | 🔴 高 |
| 播放器支持测试 | hls.js / dash.js / Shaka Player 是否支持 | 🔴 高 |
| 浏览器覆盖率评估 | 目标用户群的浏览器版本分布 | 🟡 中 |
| 硬件解码芯片覆盖 | 目标设备的 SoC 是否支持 AV2 硬解 | 🟡 中 |
| 带宽节省量化 | A/B 测试对比 AV1 vs AV2 的实际带宽节省 | 🟡 中 |
| 回退方案准备 | 不支持 AV2 的客户端如何降级到 AV1/H.264 | 🔴 高 |
| CDN 缓存策略更新 | 新的文件命名和缓存规则 | 🟢 低 |
| 监控指标新增 | AV2 播放成功率、解码错误率等指标 | 🟡 中 |
📊 四、视频编码标准全景对比与未来展望
4.1 当前主流编码标准全景图
理解 AV2 的位置,需要把它放在整个视频编码标准生态中:
| 标准 | 发布年份 | 压缩效率基准 | 专利费用 | Web 生态支持 | 适合场景 |
|---|---|---|---|---|---|
| H.264/AVC | 2003 | 基准 | 有(已过期部分) | 全平台 | 兼容性兜底 |
| VP9 | 2013 | 较 H.264 +40% | 免费 | Chrome/FF/Edge | YouTube 等 |
| H.265/HEVC | 2013 | 较 H.264 +50% | 复杂 | Safari 为主 | 4K 流媒体 |
| AV1 | 2018 | 较 H.264 +50% | 免费 | 全主流浏览器 | Web 视频首选 |
| H.266/VVC | 2020 | 较 H.265 +50% | 复杂 | 无浏览器支持 | 广播/专业 |
| EVC | 2020 | 较 H.264 +40% | 基线免费 | 极少 | 备选方案 |
| AV2 | 2026 | 较 AV1 +30% | 免费 | 预计 2027+ | 下一代 Web 视频 |
4.2 开发者决策建议
基于以上分析,以下是针对不同场景的明确建议:
如果你今天在做新项目:
- ✅ 编码选择 AV1 (SVT-AV1),容器用 WebM
- ✅ 保留 H.264 MP4 作为兼容性回退
- ❌ 不要使用 H.266/VVC——浏览器不会支持
- ❌ 不要使用 H.265/HEVC 做 Web 视频——浏览器支持碎片化
如果你在规划 2027-2028 的技术路线:
- ✅ 关注 AV2 编码器的成熟度(预计 2027 年会有 SVT-AV2 或同等水平的编码器)
- ✅ 抽象编码层,使编码器可替换(不要硬编码 codec 参数)
- ✅ 参与 AOMedia 的 AV2 兼容性测试
如果你在做视频基础设施:
- ✅ 今天就开始使用 AV1,积累编码参数调优经验
- ✅ 设计编码流水线时预留 AV2 接入点
- ✅ 建立编码质量评估体系(VMAF 分数、PSNR、SSIM)
- ⚠️ 不要一步到位全面切 AV2——至少等硬件解码覆盖率达到 30% 以上
4.3 编码质量评估实战
迁移到新编码标准时,必须用数据说话。以下是使用 FFmpeg 计算 VMAF(Netflix 开发的视频质量评估指标)分数的方法:
# 计算 AV1 编码视频相对于原始视频的 VMAF 分数
# VMAF 分数范围 0-100,通常 90+ 即为优秀
ffmpeg -i output_av1.webm -i input.mp4 \
-lavfi "libvmaf=n_threads=4:log_path=vmaf_log.json:log_fmt=json" \
-f null -
# 解析 VMAF 结果
python3 -c "
import json
with open('vmaf_log.json') as f:
data = json.load(f)
vmaf_avg = data.get('pooled_metrics', {}).get('vmaf', {}).get('mean', 0)
print(f'VMAF 平均分: {vmaf_avg:.2f}')
if vmaf_avg >= 90:
print('✅ 画质优秀,可直接部署')
elif vmaf_avg >= 80:
print('⚠️ 画质良好,建议微调 CRF')
else:
print('❌ 画质不足,需要降低 CRF 值或提高 preset')
"
💡 提示: VMAF 分数在不同内容类型上表现差异很大。动画/卡通内容天然 VMAF 分高(因为色块大、细节少),而体育/自然场景 VMAF 分低。建议用你平台上 5-10 个典型视频做基准测试,而不是用标准测试序列。
🎯 总结
AV2 的发布标志着视频编码标准进入了一个新周期。虽然距离生产级可用还需要 1-2 年时间(等编码器优化和硬件解码支持),但技术布局要从今天开始。
核心建议:
- 今天就用好 AV1:如果你还没从 H.264 迁移到 AV1,现在就该行动了。AV1 的浏览器支持已经超过 90%,SVT-AV1 的编码速度已经足够生产使用
- 抽象编码层:不要把编码器参数硬编码到业务逻辑中,设计一个可插拔的编码接口
- 建立质量基线:用 VMAF 等客观指标量化你当前的编码质量,这样迁移 AV2 时才能有数据对比
- 关注 AOMedia 动态:加入 AV1/AV2 的 GitHub 仓库,关注编解码器的开发进度
相关工具推荐:
- 🎬 FFmpeg:编解码瑞士军刀,AV1/AV2 编码首选
- 📊 VMAF:Netflix 开源的视频质量评估工具
- 🔍 MediaInfo:视频文件元信息分析工具
- 🌐 Shaka Player:Google 开源的自适应码率播放器
- 🧪 AV1/AV2 Analyzer:编码工具可视化分析器
- 📐 jsjson.com JSON 工具:处理视频元数据中的 JSON 配置时,使用我们的 JSON 格式化工具 和 JSON 压缩工具 快速处理编码参数配置