本节摘要:浏览器侧 AV1 已成标配:Firefox 2019 年率先默认启用(dav1d),Chrome 系紧随其后并把解码切到 dav1d,Safari 迟至 2023 年才补上。平台侧 YouTube 长期领跑,Netflix 从移动端灰度起步,直播平台在硬编码普及后跟进。本节给出各端支持版图与"怎么灰度不上火"的部署策略。
浏览器的支持时间线浓缩了 AV1 生态的全部戏剧性:Chrome 70(2018 年)带着实验性 AV1 解码上场,当时用的是参考实现的解码器;Mozilla 把 dav1d 做出来后,Firefox 67(2019 年)率先默认启用,Chrome 系随后也切换到 dav1d;Edge 随 Chromium 内核自动跟进;Safari 则等 Apple 生态自家的节奏,到 2023 年(Safari 17 前后)才在支持的设备上启用,且体验与硬解绑定。对照 HEVC 在浏览器里因专利问题长期缺位的历史,AV1 是第一个"三大内核齐备"的开放视频编码格式。
| 端 | 支持起点(大致) | 解码实现 | 备注 |
|---|---|---|---|
| Chrome / Edge | 2018 实验,2019–2021 默认 | dav1d | 桌面与 Android 同步 |
| Firefox | 2019(Firefox 67) | dav1d | 首个默认启用的主流浏览器 |
| Safari | 2023(Safari 17 世代) | 硬解优先 | 限定有 AV1 硬解的设备 |
| Android 系统 | Android 10 起系统级软解 | dav1d 系 | 应用层普遍跟进 |
| Windows / macOS | 2020 年代初陆续内置解码组件 | 混合 | 系统级转码与相机应用受益 |
这段历史的可复用结论:解码生态的钥匙是"无专利风险的软解"。HEVC 什么都好,就差这一把钥匙;AV1 拿到钥匙后,浏览器跟进的速度快得像一个默认选项而不是一次决策。
内容平台的部署节奏与硬件曲线互为因果。YouTube 最早大规模供给 AV1(借助自家的编码基建与用户覆盖),Google 出于带宽成本的动机最足;Netflix 从移动端起步灰度——移动网络带宽贵、手机硬解普及快,是 ROI 最好的切入点,随后扩展到电视与大屏;国内与直播平台在 2022 年硬件编码普及后陆续跟进,实时推流场景对编码速度的要求此前是硬约束。
| 平台类型 | 部署策略 | 关键约束 |
|---|---|---|
| 长视频(影剧) | 离线深度转码,热门内容优先 | 转码算力成本 |
| UGC 短视频 | 大规模批量转码,中速档为主 | 吞吐与存储的平衡 |
| 直播 | 高速度档+低延迟参数,逐步灰度 | 实时编码算力、移动端推流 |
| 视频会议 | 多数仍以 H.264/VP8/VP9 为主 | 超低延迟、多方转发兼容 |
对照记忆点在最后一行:会议场景反而是 AV1 渗透最慢的战场——它要的不是压缩率而是毫秒级延迟与超强的弱网韧性,且设备兼容矩阵复杂。这提醒我们"平台部署"不是一条匀速曲线,而是按场景分化的多条曲线。
给工程团队一份可直接抄的部署清单:
1. 能力探测: 播放端检测硬解/软解能力,分出 L0–L3(见 8.1) 2. 分级供给: 同一内容多码率 ladder 保留 H.264 兜底档 3. 灰度切流: 按 1% → 5% → 20% 递进,监控卡顿率与起播时间 4. 质量护栏: VMAF 抽查 + 转码回归,防止编码器升级引入劣化 5. 成本回看: 带宽节省 vs 转码开销的月度对账(7.1 的账落地)
每一环都有前代教训:没有能力探测就全量切换,老设备投诉暴涨;没有兜底档,直播事故无处回退;没有质量护栏,编码器升级的静默劣化会在用户端放大成舆情。对照 HEVC 时代的部署(浏览器缺位导致只能走 App 内私有播放器),AV1 的灰度可以完全建立在 Web 标准设施上,工程摩擦低一个量级。
💡 一个常被忽略的观察点:起播时间。AV1 码率更低意味着同带宽下首帧更快,弱网用户的体感提升往往比画质提升更早被注意到——把起播分位数放进灰度看板,是说服业务方最有效的指标。
把主流平台的 AV1 支持摊成一张阶梯表,部署决策按行取数。浏览器侧:桌面三大阵营(两开源自核加一个自研核)近年版本已全线覆盖 8bit 与 10bit 解码,移动端浏览器的覆盖明显滞后一个身位,尤其老款 SoC 的软件回退路径。流媒体平台侧:头部平台从"单 AVMETA 试点"走到"按终端能力分流的分层部署"——服务端按设备上报的能力集(硬件解码、色彩档位、HDR 类型)决定下发 AV1 还是回退 HEVC/AVC,这个能力协商层是自建 AV1 通道时最先要建的组件。终端硬件侧:主流芯片平台的硬件解码支持从旗舰逐级下沉,中端机型覆盖 10bit 4K 的普及率每年上一个台阶,但 8K 档仍集中在旗舰。给部署排期的实务建议:先上"编码端产出 AV1 + 边缘按能力分发"的混合态(编码收益先落袋),终端覆盖率的监控仪表盘建在 CDN 日志上(按设备型号聚合解码方式),覆盖率过线再切默认档——把"何时全量"交给数据而不是日历。
设备能力上报的字段粒度经常比部署文档写的粗——"支持 AV1"不代表支持所有 profile 与档位(主线档之外的专业档、带胶片颗粒合成流的解码路径都可能是缺失项);分发层的判断逻辑要落到 profile/level 级而不是 codec 名级,否则会出现"支持却播不了"的幽灵故障,用户报障时 CDN 日志里它显示为成功下发、客户端播放失败,归因要靠客户端的解码错误码回收通道。
给自建分发层的同行一段可参考的能力协商伪代码骨架,把上面阶梯表变成代码:
def choose_codec(device_caps, content_profile): # device_caps 来自终端上报:{av1_profile: [main], hw_decode: bool, ...} # content_profile 来自内容库:{bitdepth: 10, hdr: "HDR10", grain: True} if "main" in device_caps.get("av1_profiles", []): if content_profile["bitdepth"] == 10 and device_caps.get("av1_10bit_hw"): return "AV1_10BIT_HW" if device_caps.get("av1_sw_decode_ok"): return "AV1_SW" # 软解回退:按终端算力限流 return fallback_hevc_or_avc(device_caps) return fallback_hevc_or_avc(device_caps)
骨架的重点不在语法而在分层:先判 profile 级能力、再判硬解与软解路径、最后才落回退链——每一层的判断依据都要在 CDN 日志可回溯,否则线上幽灵故障无法归因。对照各平台的公开实践,这层协商逻辑是 AV1 部署里复用度最高的一段设计,值得在自己平台先建再谈编码端优化。