AudioWorkletNode - Web API 接口参考 编辑
这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
BaseAudioContext.audioWorklet
属性不行, 从而 AudioWorkletProcessor
s 不能在外部定义.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)
规范
Specification | Status | Comment |
---|---|---|
Web Audio API AudioWorkletNode | Working Draft |
浏览器兼容性
BCD tables only load in the browser
此页面上的兼容性表是根据结构化数据生成的。 如果您想提供数据,请查看https://github.com/mdn/browser-compat-data并向我们发送PR。See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论