3. Codec Requirements (编解码器要求)
为了确保WebRTC端点之间的基线互操作性水平,下面规定了一组最小的必需编解码器。如果WebRTC端点可以使用其他合适的音频编解码器,推荐 (RECOMMENDED) 将它们也包含在offer中,以便最大化建立会话的可能性,而无需音频转码。
WebRTC端点必需 (REQUIRED) 实现以下音频编解码器:
-
Opus [RFC6716],其有效载荷格式在 [RFC7587] 中规定。
-
PCMA 和 PCMU(如ITU-T建议G.711 [G.711] 中规定),其有效载荷格式在 [RFC3551] 的第4.5.14节中规定。
-
[RFC3389] 舒适噪声 (Comfort Noise, CN)。WebRTC端点必须 (MUST) 支持 [RFC3389] CN,用于使用G.711或任何其他不提供自身CN机制的支持编解码器进行编码的流。由于Opus提供了自己的CN机制,因此不推荐 (NOT RECOMMENDED) 将 [RFC3389] CN与Opus一起使用。发送方使用不连续传输 (Discontinuous Transmission, DTX) / CN是可选的 (OPTIONAL)。
-
'audio/telephone-event' 媒体类型,如 [RFC4733] 中规定。端点可以 (MAY) 随时发送DTMF事件,并应该 (SHOULD) 抑制带内双音多频 (dual-tone multi-frequency, DTMF) 音调(如果有)。WebRTC端点生成的DTMF事件必须 (MUST) 持续时间不超过8000毫秒且不少于40毫秒。每个音调的推荐默认持续时间为100毫秒。事件之间的间隔必须 (MUST) 不少于30毫秒;推荐的默认间隔持续时间为70毫秒。WebRTC端点不需要对发送给它们的音调(如RFC 4733中规定)执行任何操作,除了优雅地丢弃它们。目前没有API可以通知JavaScript关于接收到的DTMF或其他音调(如RFC 4733中规定)。WebRTC端点必需 (REQUIRED) 能够生成和使用以下事件:
| 事件代码 (Event Code) | 事件名称 (Event Name) | 参考 (Reference) |
|---|---|---|
| 0 | DTMF数字 "0" | [RFC4733] |
| 1 | DTMF数字 "1" | [RFC4733] |
| 2 | DTMF数字 "2" | [RFC4733] |
| 3 | DTMF数字 "3" | [RFC4733] |
| 4 | DTMF数字 "4" | [RFC4733] |
| 5 | DTMF数字 "5" | [RFC4733] |
| 6 | DTMF数字 "6" | [RFC4733] |
| 7 | DTMF数字 "7" | [RFC4733] |
| 8 | DTMF数字 "8" | [RFC4733] |
| 9 | DTMF数字 "9" | [RFC4733] |
| 10 | DTMF数字 "*" | [RFC4733] |
| 11 | DTMF数字 "#" | [RFC4733] |
| 12 | DTMF数字 "A" | [RFC4733] |
| 13 | DTMF数字 "B" | [RFC4733] |
| 14 | DTMF数字 "C" | [RFC4733] |
| 15 | DTMF数字 "D" | [RFC4733] |
对于端点能够以高于8 kHz的采样率处理音频的所有情况,推荐 (RECOMMENDED) 在PCMA/PCMU之前提供Opus。对于Opus,解码器端必须 (MUST) 支持所有模式。编码器端模式的选择留给实现者。端点可以 (MAY) 使用offer/answer机制来表示对特定模式或ptime的偏好。
有关实现除上述强制实现编解码器之外的编解码器的其他信息,请参阅 [RFC7875]。