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 |
浏览器兼容性
加载中…