音频编码器:configure() 方法
注意: 此功能在专用 Web 工作线程中可用。
configure()
方法是 AudioEncoder
接口的方法,用于将控制消息排队,以配置音频编码器以编码块。
语法
configure(config)
参数
config
-
包含以下成员的字典对象
codec
sampleRate
-
表示每秒帧样本数的整数。
numberOfChannels
-
表示音频通道数的整数。
bitrate
可选-
表示比特率的整数。
bitrateMode
可选-
一个枚举值,定义编码器应使用的比特率模式。可能的取值为
"constant"
-
强制音频编码器始终保持相同的比特率,而不管音频内容如何。当需要可预测的带宽消耗时,这很有用。
"variable"
(默认)-
允许音频编码器根据它正在编码的音频内容提高或降低其比特率,以节省带宽/二进制大小,同时仍然保持目标质量。例如,编码器可以在编码静音时降低其比特率,并在编码语音时恢复到完整比特率。
特定的编解码器编码器实现可能使用略微不同的术语(例如,Opus 的 CBR 与 VBR),但它们都应该映射到“恒定”与“可变”比特率的一般概念。
opus
可选-
指定特定于 Opus 编解码器的编解码器配置选项。它的值为
OpusEncoderConfig
对象,其可能的属性如下application
可选-
一个枚举值,指定编码器的预期应用程序类型。可能的取值为
complexity
可选-
一个数字,根据RFC6716,2.1.5. — 复杂度中描述的方面来定义编码器的计算复杂度。有效范围是 0 到 10,其中 10 代表最高复杂度。如果没有指定值,则默认值为平台特定值,规范建议移动平台为 5,其他所有平台为 9。
format
可选-
一个枚举值,指定编码器应输出
EncodedAudioChunk
的格式。可能的取值为opus
(默认)-
以 Opus 格式输出
EncodedAudioChunk
。在这种情况下,解码编码音频流不需要任何元数据。 ogg
-
以 Ogg 格式输出
EncodedAudioChunk
。在这种情况下,解码编码音频流不需要任何元数据。在这种情况下,编码音频流的元数据在解码器配置中提供 - 通过传递到AudioDecoder.configure()
的 config 对象的description
属性。
frameDuration
可选-
一个数字,以微秒为单位定义编码器输出的
EncodedAudioChunk
的帧持续时间。如果未指定,则frameDuration
默认值为20000
。 packetlossperc
可选-
一个数字,定义编码器预期的丢包百分比。有效范围是 0 到 100。如果未指定,则
packetlossperc
默认值为0
。 signal
可选-
一个枚举值,指定正在编码的音频信号类型的默认值。可能的取值为
usedtx
可选-
一个布尔值,指定编码器是否使用断续传输 (DTX),这在静音或背景噪音期间会降低比特率。当 DTX 启用时,每 400 毫秒只编码一帧。如果未指定,则
usedtx
默认值为false
。 useinbandfec
可选-
一个布尔值,指定编码器是否提供 Opus 带内前向纠错 (FEC)。这会导致确定为包含感知上重要语音信息的包(例如,起始音或瞬态)以较低比特率重新编码并添加到后续包中。如果未指定,则
useinbandfec
默认值为false
。
返回值
无 (undefined
).
异常
TypeError
-
如果提供的
config
无效,则抛出此异常。 InvalidStateError
DOMException
-
如果
state
为"closed"
,则抛出此异常。 NotSupportedError
DOMException
-
如果提供的
config
有效,但用户代理无法提供可以解码此配置文件的编解码器,则抛出此异常。
示例
基本配置示例
以下示例创建一个新的 AudioEncoder
并使用一些可用选项对其进行配置。
const init = {
output: handleOutput,
error: (e) => {
console.log(e.message);
},
};
let config = {
codec: "mp3",
sampleRate: 44100,
numberOfChannels: 2,
bitrate: 128_000, // 128 kbps
bitrateMode: "constant",
};
let encoder = new AudioEncoder(init);
encoder.configure(config);
Opus 特定配置示例
以下示例创建一个新的 AudioEncoder
并使用 Opus 特定选项对其进行配置。
const init = {
output: handleOutput,
error: (e) => {
console.log(e.message);
},
};
let opusConfig = {
application: "voip",
complexity: 9,
signal: "voice",
usedtx: true,
};
let config = {
codec: "opus",
sampleRate: 44100,
numberOfChannels: 2,
bitrate: 128_000,
opus: opusConfig,
};
let encoder = new AudioEncoder(init);
encoder.configure(config);
规范
规范 |
---|
WebCodecs # dom-audioencoder-configure |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。