AudioWorkletGlobalScope: registerProcessor() 方法
registerProcessor
方法是 AudioWorkletGlobalScope
接口的一部分,它用于在指定的 name 下注册一个派生自 AudioWorkletProcessor
接口的类构造函数。
语法
js
registerProcessor(name, processorCtor)
参数
name
-
一个字符串,表示处理器将被注册到的名称。
processorCtor
-
派生自
AudioWorkletProcessor
的类的构造函数。
注意:一旦处理器注册,{ name: constructor }
的键值对就会保存在 AudioWorkletGlobalScope
中。创建基于已注册处理器的 AudioWorkletNode
时,需要引用 name。系统会在内部创建一个新的同名处理器,并将其与新节点关联。
返回值
无 (undefined
).
异常
NotSupportedError
DOMException
-
在以下情况下抛出
- 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 |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。