本节摘要:选型不是"AAC 还是 Opus"的二选一,而是把业务语义翻译成参数契约的流程——先锁定延迟与兼容两个硬约束定编码器,再按场景定码率与帧长,最后按最弱终端定复杂度。本节给出翻译流程、四类典型业务的参数契约模板,以及"双轨架构"这一混合解法。
第 5 章开篇:4.3 节给了约束场与领地划分,本节把它工程化——变成一张可以直接写进设计文档的参数表。
第一问:延迟硬不硬? 问的不是"希望多低",而是"超过多少业务就不可用"。对话类 150 ms 是生理红线,云游戏合奏类要压到 50 ms 内,点播类可以放宽到秒级。这一问直接劈开世界:硬延迟基本锁死 Opus(或特定场景的 AAC-ELD),宽延迟打开全部选项。
第二问:兼容硬不硬? 目标播放设备是否包括存量硬件(车机、机顶盒、广播接收)?包括则 AAC 几乎是唯一选择;纯浏览器/App 内则 Opus 无障碍。这一问经常推翻第一问的答案,所以两问要一起过——真正的难题是"延迟硬 + 兼容也硬",解法见本节末尾的双轨架构。
第三问:预算与终端的边界在哪? 码率预算(运营成本与网络条件)决定档位区间;最弱终端的算力决定复杂度上限;信道质量决定要不要 FEC 与更短的帧。三问答完,参数契约的骨架就定了。

模板一:音乐发行/播客下载。AAC-LC,VBR,立体声 256 kbps(旗舰档)/128 kbps(标准档);容器 M4A 带完整元数据;响度按平台规范先归一(-16 LUFS 量级,具体以目标平台为准)。备选:追求开放格式时 Opus 160 kbps VBR 技术上等价,但接受 4.4 节的兼容代价。
模板二:视频点播音轨。AAC-LC,ABR 阶梯 128/96/64/48 kbps 立体声(低档可评估 HE-AAC v1);切片 2 至 4 秒;音轨转码与视频转码同流水线。要点:阶梯下端再往下不如砍档——48 kbps 以下 AAC 立体声的体验断崖明显。
模板三:视频会议。Opus,CBR(或 CVBR)32 kbps 起步、按网络自适应至 64 kbps;帧长 20 ms;复杂度按最弱终端 4–6;FEC 开且丢包率随 RTCP 动态设;DTX 开;带宽自动。单流多码率不需要——Opus 逐帧可调,不需要 AAC 式的多档预编码。
模板四:互动直播(连麦 + 分发)。双轨:连麦者之间走 Opus(同模板三);观众下行由服务端把混音流转码为 AAC 阶梯(同模板二)。转码点即成本点——5.4 节会算这笔账。
延迟与兼容双硬约束(低延迟互动 + 全设备可看)在单编码器里无解,双轨是行业通用解:交互域用 Opus 保障体验,分发域用 AAC 保障覆盖,中间一次服务端转码。设计要点有二:转码尽量晚(混音后一次转,不做多级级联,5.2 节会讲级联损伤);交互域的参会者永远不需要等分发轨——两条链路在传输层就分流。
⚠️ 常见坑:三份"看似合理"的契约经常翻车——会议场景抄了点播模板(AAC 无 FEC,弱网断续);发行场景追求新技术用了 Opus 但车载播放不认(兼容核查缺失);点播阶梯最下端压到 32 kbps AAC 立体声(体验断崖,不如明确降为单声道 48 k)。根源都是模板抄了、三问没过。
以"万人在线教育直播(讲师连麦 + 学生举手发言)"为例,完整契约长这样:
| 契约项 | 取值 | 依据 |
|---|---|---|
| 交互轨编码器 | Opus 1.4 及以上 | 延迟硬约束 + 浏览器/App 双端 |
| 交互轨码率 | CBR 40 kbps,网络自适应 24–64 | 语音为主偶有共享伴奏 |
| 交互轨帧长 | 20 ms | 对话节奏与包开销平衡 |
| 交互轨复杂度 | 5(按低端安卓机核定) | 最弱终端是百元机 |
| 容错 | FEC 开、随 RTCP 丢包率 5–30 联动;DTX 开 | 移动网络占比高 |
| 分发轨编码器 | AAC-LC 三档:128/96/64 | 存量设备兼容硬约束 |
| 分发轨容器 | HLS,切片 4 秒 | 点播容忍秒级延迟 |
| 转码点 | 服务端混音后一次转出三档 | 5.2 级联原则 |
| 验收标准 | 连麦端到端 P95 低于 220 ms;分发档 MUSHRA 抽检不低于 80 分 | 业务体感目标 |
写契约时最容易漏的是最后一行"验收标准"——没有它,参数就没有"何时算失败"的定义,调优无从谈起。建议每个契约项都补一列"超标现象":码率项超标看到卡顿与费用,延迟项超标看到抢话,复杂度项超标看到低端机发热——这份"现象对照"在排障时就是第一张地图。
三个高频提问也值得预先写进契约文档。问:以后要支持纯音乐内容分享,契约要动吗?答:交互轨 Opus 无需改(引擎自动切 CELT),但码率上限建议提到 96 kbps 档。问:观众端有网页 WebRTC 需求怎么办?答:分发轨加一路 Opus 直通(跳过转码),浏览器观众走低延迟轨道。问:能否用 xHE-AAC 替换 AAC-LC 保底档?答:技术上更优,但需先核对全部目标设备的解码支持清单(4.4 节核查表),存量设备不齐就维持 HE-AAC 方案。
💡 关键直觉:参数契约的本质是把"体验目标"写成"可验证的数字"。写完后逐项自问:这个数字超标时会看到什么现象?答不上来的项就是没想清楚的项。
误区一:"新的一定更好"。编码器的"新"只在特定码率段与场景成立——比如某新编码器在 6 kbps 语音上惊艳,但你的业务是 128 kbps 音乐发行,它的表现可能反而不如打磨二十年的 AAC-LC。正确的问法永远是"在我的约束场里谁占优",而不是"谁发布得晚"。
误区二:"码率越高越保险"。码率是有隐性成本的:上行带宽挤占(弱网用户反而更容易卡)、存储与分发费用线性增长、以及最隐蔽的"掩盖问题"——预算一宽,TNS 被关、级联冗余这些根因全部隐形(5.2 节的排障陷阱在选型期就埋下)。码率应该定在"听感验收通过后再上浮一档安全余量"的位置,而不是无脑顶格。
误区三:"一个编码器解决全部"。真实系统里多编码器共存是常态而非妥协——连麦轨与分发轨各用所长(5.4 的双轨算例)、不同终端适配不同档位、存量内容与新内容分格式并行。把"统一编码器"当成目标,经常是把技术洁癖错当成了架构美德。
契约签了只是开始——上线后的声音问题怎么定位,下一节给出四类症状的完整排查路径。