AudioWorkletGlobalScope: registerProcessor() 方法
AudioWorkletGlobalScope 介面的 registerProcessor 方法會根據指定的 name 註冊一個派生自 AudioWorkletProcessor 介面的類建構函式。
語法
js
registerProcessor(name, processorCtor)
引數
name-
一個代表處理器註冊名稱的字串。
processorCtor-
派生自
AudioWorkletProcessor介面的類的建構函式。
注意: 在處理器註冊後,一個 { name: constructor } 鍵值對會被儲存在 AudioWorkletGlobalScope 內部。建立基於已註冊處理器的 AudioWorkletNode 時會引用 name。內部會建立一個具有給定名稱的新處理器並將其與新節點關聯。
返回值
無(undefined)。
異常
NotSupportedErrorDOMException-
在以下情況下會丟擲異常
- name 為空字串。
- 具有給定 name 的建構函式已被註冊。不允許重複註冊相同的名稱。
TypeError-
在以下情況下會丟擲異常
- processorCtor 不是一個可呼叫的建構函式。
- 建構函式的
parameterDescriptors屬性存在,但未返回一個AudioParamDescriptor型別的物件的陣列。
示例
在此示例中,我們建立一個自定義的 AudioWorkletNode 來輸出靜音。
首先,我們需要定義一個自定義的 AudioWorkletProcessor 並進行註冊。請注意,這應該在一個單獨的檔案中完成。
js
// test-processor.js
class TestProcessor extends AudioWorkletProcessor {
process(inputs, outputs, parameters) {
return true;
}
}
registerProcessor("test-processor", TestProcessor);
接下來,在我們的主指令碼檔案中,我們將載入處理器,建立一個 AudioWorkletNode 例項(在呼叫 registerProcessor 時傳入我們使用的處理器名稱),並將其連線到音訊圖。
js
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("test-processor.js");
const node = new AudioWorkletNode(audioContext, "test-processor");
node.connect(audioContext.destination);
規範
| 規範 |
|---|
| Web Audio API # dom-audioworkletglobalscope-registerprocessor |
瀏覽器相容性
載入中…