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

瀏覽器相容性