AudioEncoder: configure() 方法
注意:此功能在 专用 Web Workers 中可用。
AudioEncoder 接口的 configure() 方法用于将一个控制消息放入队列,以配置音频编码器以对块进行编码。
语法
configure(config)
参数
config-
一个包含以下成员的字典对象
codec-
一个包含 有效编解码器字符串 的字符串。有关编解码器字符串构建的详细信息,请参阅 “codecs”参数。
sampleRate-
每秒帧采样数。
numberOfChannels-
音频通道数。
bitrate可选-
比特率。
bitrateMode可选-
一个定义编码器应使用的比特率模式的枚举值。可能的值为
"constant"-
强制音频编码器保持相同的比特率,无论音频内容如何。当首选可预测的带宽消耗时,这可能很有用。
"variable"(默认)-
允许音频编码器根据其编码的音频内容增加或降低其比特率,以节省带宽/二进制大小,同时仍保持目标质量。例如,编码静默时,编码器可能会降低其比特率,而在编码语音时恢复到全比特率。
特定的编解码器实现可能使用略有不同的术语(例如,Opus 的 CBR 与 VBR),但它们都应映射到“恒定”与“可变”比特率的总体概念。
opus可选-
指定 Opus 编解码器的特定配置选项。其值为
OpusEncoderConfig对象,其可能属性如下application可选-
一个指定编码器预期应用程序类型的枚举值。可能的值为
audio(默认)-
忠实地处理原始输入信号。
lowdelay-
处理信号时,通过禁用某些操作模式来配置尽可能小的编码延迟。
voip-
处理信号以提高语音清晰度。
complexity可选-
一个数字,根据 RFC6716,第 2.1.5 节——复杂度中描述的方面定义了编码器的计算复杂度。有效范围为 0 到 10,其中 10 表示最高复杂度。如果未指定值,则默认值是特定于平台的,规范建议移动平台为 5,所有其他平台为 9。
format可选-
一个指定编码器应输出
EncodedAudioChunk的格式的枚举值。可能的值为 frameDuration可选-
一个数字,定义编码器输出的
EncodedAudioChunk的帧持续时间(以微秒为单位)。如果未指定,frameDuration默认为20000。 packetlossperc可选-
一个数字,定义编码器预期的丢包率。有效范围为 0 到 100。如果未指定,
packetlossperc默认为0。 signal可选-
一个指定要编码的音频信号类型的默认值的枚举值。可能的值为
usedtx可选-
一个布尔值,指定编码器是否使用不连续传输 (DTX),这会在静默或背景噪声期间降低比特率。启用 DTX 时,每 400 毫秒只编码一帧。如果未指定,
usedtx默认为false。 useinbandfec可选-
一个布尔值,指定编码器是否提供 Opus 带内前向纠错 (FEC)。这会导致包含感知重要语音信息(如起始音或瞬态)的数据包被以较低的比特率重新编码并添加到后续数据包中。如果未指定,
useinbandfec默认为false。
返回值
无(undefined)。
异常
TypeError-
如果提供的
config无效,则抛出此异常。 InvalidStateErrorDOMException-
如果
state为"closed",则抛出此异常。 NotSupportedErrorDOMException-
如果提供的
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 |
浏览器兼容性
加载中…