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 |
瀏覽器相容性
載入中…