AudioWorkletNode

基线 广泛可用

此功能已得到广泛应用,并在许多设备和浏览器版本中正常工作。它自 2021 年 4 月.

报告反馈

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在部分或所有支持浏览器中可用。

注意:虽然此接口在安全上下文之外可用,但BaseAudioContext.audioWorklet 属性不可用,因此无法在安全上下文之外定义自定义AudioWorkletProcessor

EventTarget AudioNode AudioWorkletNode

构造函数

AudioWorkletNode()

AudioWorkletNodeWeb Audio API中的一种接口,它表示一个用户定义的AudioNode 的基类,可以将其与其他节点一起连接到音频路由图中。它有一个关联的AudioWorkletProcessor,该处理器在 Web Audio 渲染线程中执行实际的音频处理。

实例属性

创建一个新的 AudioWorkletNode 对象实例。.

还从其父级AudioNode 继承属性

AudioWorkletNode.port 只读

返回一个MessagePort,用于在节点与其关联的AudioWorkletProcessor 之间进行双向通信。另一个端点在处理器的port 属性下可用。

AudioWorkletNode.parameters 只读

事件

processorerror

返回一个AudioParamMap - 一个AudioParam 对象的集合。它们是在创建底层 AudioWorkletProcessor 时实例化的。如果 AudioWorkletProcessor 具有静态的parameterDescriptors getter,则从其中返回的AudioParamDescriptor 数组将用于在 AudioWorkletNode 上创建 AudioParam 对象。通过这种机制,可以使您自己的 AudioParam 对象在您的 AudioWorkletNode 中可访问。然后,您可以在关联的 AudioWorkletProcessor 中使用它们的值。

实例方法

当关联的AudioWorkletProcessor 中抛出错误时触发。一旦触发,处理器和节点将在此后的生命周期中始终输出静音。.

还从其父级AudioNode 继承方法

示例

AudioWorkletNode 接口本身没有定义任何方法。

在此示例中,我们创建一个自定义的 AudioWorkletNode,它输出随机噪声。

首先,我们需要定义一个自定义的AudioWorkletProcessor,它将输出随机噪声,并将其注册。请注意,这应在单独的文件中完成。
// random-noise-processor.js
class RandomNoiseProcessor extends AudioWorkletProcessor {
  process(inputs, outputs, parameters) {
    const output = outputs[0];
    output.forEach((channel) => {
      for (let i = 0; i < channel.length; i++) {
        channel[i] = Math.random() * 2 - 1;
      }
    });
    return true;
  }
}

registerProcessor("random-noise-processor", RandomNoiseProcessor);

js

首先,我们需要定义一个自定义的AudioWorkletProcessor,它将输出随机噪声,并将其注册。请注意,这应在单独的文件中完成。
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("random-noise-processor.js");
const randomNoiseNode = new AudioWorkletNode(
  audioContext,
  "random-noise-processor",
);
randomNoiseNode.connect(audioContext.destination);

规范

接下来,在我们的主脚本文件中,我们将加载处理器,创建一个 AudioWorkletNode 的实例,并向其传递处理器的名称,然后将该节点连接到音频图中。
Web Audio API
# AudioWorkletNode

浏览器兼容性

规范

另请参阅