Skip to main content

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)
0DTMF数字 "0"[RFC4733]
1DTMF数字 "1"[RFC4733]
2DTMF数字 "2"[RFC4733]
3DTMF数字 "3"[RFC4733]
4DTMF数字 "4"[RFC4733]
5DTMF数字 "5"[RFC4733]
6DTMF数字 "6"[RFC4733]
7DTMF数字 "7"[RFC4733]
8DTMF数字 "8"[RFC4733]
9DTMF数字 "9"[RFC4733]
10DTMF数字 "*"[RFC4733]
11DTMF数字 "#"[RFC4733]
12DTMF数字 "A"[RFC4733]
13DTMF数字 "B"[RFC4733]
14DTMF数字 "C"[RFC4733]
15DTMF数字 "D"[RFC4733]

对于端点能够以高于8 kHz的采样率处理音频的所有情况,推荐 (RECOMMENDED) 在PCMA/PCMU之前提供Opus。对于Opus,解码器端必须 (MUST) 支持所有模式。编码器端模式的选择留给实现者。端点可以 (MAY) 使用offer/answer机制来表示对特定模式或ptime的偏好。

有关实现除上述强制实现编解码器之外的编解码器的其他信息,请参阅 [RFC7875]。