音频编码器:configure() 方法

有限可用性

此功能不是基线,因为它在一些最广泛使用的浏览器中无法正常工作。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,在某些或所有支持的浏览器中可用。

实验性: 这是一个实验性技术
在生产环境中使用此功能之前,请仔细查看浏览器兼容性表

注意: 此功能在专用 Web 工作线程中可用。

configure() 方法是 AudioEncoder 接口的方法,用于将控制消息排队,以配置音频编码器以编码块。

语法

js
configure(config)

参数

config

包含以下成员的字典对象

codec

包含有效编解码器字符串的字符串。有关编解码器字符串构造的详细信息,请参见"编解码器"参数

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() 的 config 对象的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

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。