AudioEncoder: configure() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

注意:此功能在 专用 Web Workers 中可用。

AudioEncoder 接口的 configure() 方法用于将一个控制消息放入队列,以配置音频编码器以对块进行编码。

语法

js
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 的格式的枚举值。可能的值为

opus (默认)

以 Opus 格式输出 EncodedAudioChunk。在这种情况下,无需元数据即可解码编码的音频流。

ogg

以 Ogg 格式输出 EncodedAudioChunk。在这种情况下,无需元数据即可解码编码的音频流。在这种情况下,编码音频流的元数据在解码器配置中提供——通过传递到 AudioDecoder.configure() 的配置对象的 description 属性。

frameDuration 可选

一个数字,定义编码器输出的 EncodedAudioChunk 的帧持续时间(以微秒为单位)。如果未指定,frameDuration 默认为 20000

packetlossperc 可选

一个数字,定义编码器预期的丢包率。有效范围为 0 到 100。如果未指定,packetlossperc 默认为 0

signal 可选

一个指定要编码的音频信号类型的默认值的枚举值。可能的值为

auto (默认)

未指定音频信号为特定类型。

music

音频信号是音乐。

voice

音频信号是语音。

usedtx 可选

一个布尔值,指定编码器是否使用不连续传输 (DTX),这会在静默或背景噪声期间降低比特率。启用 DTX 时,每 400 毫秒只编码一帧。如果未指定,usedtx 默认为 false

useinbandfec 可选

一个布尔值,指定编码器是否提供 Opus 带内前向纠错 (FEC)。这会导致包含感知重要语音信息(如起始音或瞬态)的数据包被以较低的比特率重新编码并添加到后续数据包中。如果未指定,useinbandfec 默认为 false

返回值

无(undefined)。

异常

TypeError

如果提供的 config 无效,则抛出此异常。

InvalidStateError DOMException

如果 state"closed",则抛出此异常。

NotSupportedError DOMException

如果提供的 config 有效,但用户代理无法提供可解码此配置文件的编解码器,则抛出此异常。

示例

基本配置示例

以下示例创建一个新的 AudioEncoder 并使用一些可用选项对其进行配置。

js
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 特定选项对其进行配置。

js
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

浏览器兼容性