背景:在 WebAudio API 中,
AudioWorkletProcessor
的实现必须提供由系统调用的 process(inputs, outputs, parameters)
方法,系统根据连接到处理器的 AudioWorkletNode
的内容构造传入的数组。该文档位于此处:https://developer.mozilla.org/en-US/docs/Web/API/AudioWorkletProcessor/process
问题:为什么
outputs
参数可能只包含一个空数组?在我的 process()
方法中,我的代码如下所示:
process(inputs, outputs, parameters) {
this.inputs = inputs;
this.parameters = parameters;
this.bufferLength = outputs[0][0].length;
this.checkTimer();
return this._process(outputs);
}
我收到一个错误,浏览器无法读取
length
的undefined
,仔细一看,这是因为outputs[0]
是一个包含0个元素的数组,所以outputs[0][0]
是未定义的。据我所知,音频节点is连接到目标节点,因此数据应该在这里流动。但如果我能更好地理解为什么outputs[0]
是空的,我就能更好地找到问题的真正根源。
注意:我知道我实际上不需要在这里获取缓冲区长度,因为无论如何它总是 128,但
_process(outputs)
方法显然最终需要填充这个数组。
谢谢!