1. 完全限定的编解码器字符串
编解码器字符串为 "opus"。
2. EncodedAudioChunk 数据
包含 Opus 的 EncodedAudioChunk
可以采用两种不同格式。
如果比特流采用 opus
格式,则 EncodedAudioChunk
必须是 Opus 数据包,如 第
3 节,该节位于 [OPUS]
如果比特流采用 ogg
格式,则 EncodedAudioChunk
必须是音频数据包,如 第
3 节,该节位于 [OPUS-IN-OGG]。
3. AudioDecoderConfig description
description
可以可选地设置为一个 Identification
Header,如 [OPUS-IN-OGG] 第 5.1 节所述。
如果已设置 description,
则假定比特流
采用 ogg
格式。
如果未设置 description,
则假定比特流
采用 opus
格式。
4. EncodedAudioChunk type
对于包含
Opus 的 EncodedAudioChunk,
其 [[type]]
始终为 “key”。
注: 一旦初始化成功,任何数据包 都可以在任何 时候无错误地解码,但这可能不会产生预期的音频输出。
5. AudioEncoderConfig 扩展
partial dictionary AudioEncoderConfig {OpusEncoderConfig opus ; };
opus, 类型为 OpusEncoderConfig- 包含 Opus 编解码器的编解码器特有配置选项。
5.1. OpusEncoderConfig
dictionary {OpusEncoderConfig OpusBitstreamFormat format = "opus";OpusSignal signal = "auto";OpusApplication application = "audio"; [EnforceRange ]unsigned long long frameDuration = 20000; [EnforceRange ]unsigned long complexity ; [EnforceRange ]unsigned long packetlossperc = 0;boolean useinbandfec =false ;boolean usedtx =false ; };
要检查某个 OpusEncoderConfig
是否有效,请运行以下步骤:
-
如果
frameDuration不是有效的帧时长, 如 [RFC6716] 第 2.1.4 节所述,则返回false。 -
如果指定了
complexity, 且它不在0到10的闭区间内,则返回false。 -
如果指定了
packetlossperc, 且它不在0到100的闭区间内,则返回false。 -
返回
true。
format, 类型为 OpusBitstreamFormat,默认值为"opus"- 配置输出
EncodedAudioChunk的格式。 参见OpusBitstreamFormat。 signal, 类型为 OpusSignal,默认值为"auto"- 指定正在编码的音频信号类型。参见
OpusSignal。 application, 类型为 OpusApplication,默认值为"audio"- 指定编码器的预期应用。参见
OpusApplication。 frameDuration, 类型为 unsigned long long,默认值为20000- 配置输出
EncodedAudioChunk的帧时长,以微秒为单位。 complexity, 类型为 unsigned long- 配置编码器的计算复杂度,如 [RFC6716] 第 2.1.9 节所述。有效范围为
0到10,其中10表示最高 复杂度。如果未指定值,则默认值是平台特定的: 用户代理 SHOULD 对移动 平台设置默认值5,并对所有其他平台设置默认值9。 packetlossperc, 类型为 unsigned long,默认值为0-
配置编码器预期的数据包丢失百分比。有效范围为
0到100。注: 数据包丢失百分比可能会 在一次编码过程中被更新, 建议用户代理支持这些重新配置。
useinbandfec, 类型为 boolean,默认值为false- 指定编码器是否提供 Opus 带内前向纠错 (FEC),如 [RFC6716] 第 2.1.7 节所述。
usedtx, 类型为 boolean,默认值为false- 指定编码器是否使用非连续传输(DTX),如 [RFC6716] 第 2.1.9 节所述。
5.2. OpusBitstreamFormat
enum {OpusBitstreamFormat "opus" ,"ogg" , };
OpusBitstreamFormat
决定解码
编码音频流是否需要额外数据。
opus- 解码编码音频流不需要元数据。
ogg- 编码音频流的元数据会在配置时通过
AudioDecoderConfig.description提供。
5.3. OpusSignal
enum {OpusSignal "auto" ,"music" ,"voice" , };
OpusSignal
表示正在编码的信号类型的默认值。
auto- 音频信号未被指定为某种特定类型。
music- 音频信号是音乐。
voice- 音频信号是人声或语音。
5.4. OpusApplication
enum {OpusApplication "voip" ,"audio" ,"lowdelay" , };
OpusApplication
表示编码器预期
应用的默认值。
voip- 处理信号以提升语音可懂度。
audio- 偏向于忠实于原始输入。
lowdelay- 通过禁用某些运行模式来配置尽可能小的编码延迟。
6. 隐私考量
请参阅 隐私 考量一节,该节位于 [WEBCODECS] 中。
7. 安全考量
请参阅 安全 考量一节,该节位于 [WEBCODECS] 中。