Replacing scriptProcessorNode with AudioWorklet



我正在记录用户的麦克风输入并进行处理。问题是我使用scriptProcessorNode来处理数据,但这里说它已被弃用,并被AudioWorklet取代。问题是,没有明确的方法可以用AudioWorklet取代这一功能,而且从谷歌所有使用AudioWorklets的示例项目来看,没有一个项目使用麦克风输入。有没有办法用Audio Worklet替换此代码?这是"应该"替换的代码。

// Connect analyser
this.options.source.connect(this.analyser);
// Create ScriptProcessorNode
this.scriptProcessorNode = this.options.context.createScriptProcessor(this.options.bufferLen, numChannels, numChannels);
// Connect scriptProcessorNode (Theretically, not required)
this.scriptProcessorNode.connect(this.options.context.destination);
// Create callback to update/analyze floatFrequencyData
var self = this;
this.scriptProcessorNode.onaudioprocess = function (event) {
self.analyser.getFloatFrequencyData(self.floatFrequencyData);
self.update();
self.store(event);
self.monitor();
};
// Connect scriptProcessorNode
this.options.source.connect(this.scriptProcessorNode);

我有一个创建AudioWorkletProcessor的简单示例。你可以在这里查看。它只适用于Chromium,Firefox还不支持AudioWorklet。

这是一个我准备展示我遇到的webpack错误的例子,所以请只检查源代码。如果你运行这个项目,它将失败,除非你注释audio-meter.js的第8行并取消注释第11行。audio-meter.worker.js文件重复,内容相同。

最新更新