AudioWorkletGlobalScope: registerProcessor() 方法

基线 广泛可用

此功能已经成熟,并且可以在许多设备和浏览器版本中使用。它自以下时间起在浏览器中可用: 2021 年 4 月.

registerProcessor 方法是 AudioWorkletGlobalScope 接口的一部分,它用于在指定的 name 下注册一个派生自 AudioWorkletProcessor 接口的类构造函数。

语法

js
registerProcessor(name, processorCtor)

参数

name

一个字符串,表示处理器将被注册到的名称。

processorCtor

派生自 AudioWorkletProcessor 的类的构造函数。

注意:一旦处理器注册,{ name: constructor } 的键值对就会保存在 AudioWorkletGlobalScope 中。创建基于已注册处理器的 AudioWorkletNode 时,需要引用 name。系统会在内部创建一个新的同名处理器,并将其与新节点关联。

返回值

无 (undefined).

异常

NotSupportedError DOMException

在以下情况下抛出

  • name 为空字符串。
  • 已注册了给定 name 下的构造函数。不允许两次注册相同的名称。
TypeError

在以下情况下抛出

示例

在这个例子中,我们创建了一个自定义的 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 的浏览器中加载。

另请参阅