AudioWorkletNode - Web API 接口参考 编辑

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

虽然这个接口可以在 secure contexts 之外调用, 但是 BaseAudioContext.audioWorklet 属性不行, 从而 AudioWorkletProcessors 不能在外部定义.

Web Audio API 中的  AudioWorkletNode  接口代表了用户定义的AudioNode的基类, 该基类可以与其他节点一起连接到音频路由图. 其具有关联的AudioWorkletProcessor, 它在 Web Audio 执行实际的音频处理.

构造函数

AudioWorkletNode()
为 AudioWorkletNode 创建一个新的实例对象.

属性

也继承父类的属性, AudioNode.

AudioWorkletNode.port 只读
返回一个 MessagePort 用于节点与其关联的 AudioWorkletProcessor 间的双向通讯. 另一端在处理器属性port 下可用.
AudioWorkletNode.parameters 只读
返回一个 AudioParamMap —  AudioParam 对象的集合. 它们在创建 AudioWorkletProcessor的过程中被实例化. 如果 AudioWorkletProcessor 有一个静态的 parameterDescriptors getter, 从其返回的 AudioParamDescriptor 数组用于在 AudioWorkletNode 创建 AudioParam 对象. 通过这种机制,使得 AudioParam 对象可以从 AudioWorkletNode 中访问. 你可以在与其关联的 AudioWorkletProcessor 中使用它的值.

Event handlers

AudioWorkletNode.onprocessorerror
在关联的 AudioWorkletProcessor 对象发生异常时触发. 一旦触发,处理器及其节点将在其整个生命周期内处于输出静默状态.

方法

同样继承了其父类的方法, AudioNode.

AudioWorkletNode 接口未定义其自己的任何方法.

示例

在本示例中我们创建了 AudioWorkletNode 对象, 它会输出白噪声.

首先, 我们需要定义一个自定义的 AudioWorkletProcessor, 它将输出白噪声并进行注册. 注意, 这需要在一个单独的文件中完成.

// white-noise-processor.js
class WhiteNoiseProcessor 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('white-noise-processor', WhiteNoiseProcessor)

接下来, 在脚本主文件中一个 AudioWorkletNode 实例, 并传递处理器的名称, 然后将该实例连接到一个audio graph.

const audioContext = new AudioContext()
await audioContext.audioWorklet.addModule('white-noise-processor.js')
const whiteNoiseNode = new AudioWorkletNode(audioContext, 'white-noise-processor')
whiteNoiseNode.connect(audioContext.destination)

规范

SpecificationStatusComment
Web Audio API
AudioWorkletNode
Working Draft

浏览器兼容性

BCD tables only load in the browser

此页面上的兼容性表是根据结构化数据生成的。 如果您想提供数据,请查看https://github.com/mdn/browser-compat-data并向我们发送PR。

See also

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:63 次

字数:6407

最后编辑:6 年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文