2

我刚刚开始研究 NaCl,希望能够制作音频浏览器扩展。文档中有一个正弦波演示,因此制作合成器似乎很简单。

我很想知道是否可以在输出之前捕获浏览器音频流,以便可以应用实时效果。这可能吗?

4

1 回答 1

4

不仅是可能的。我已经做到了。您创建一个 ScriptProcessorNode,其 onaudioprocess 回调获取输入缓冲区并通过 postMessage 将其传递给等待的 NaCl 模块。一旦 NaCl 模块完成处理,它就会通过 postMessage 将其发送回 JavaScript。ScriptProcessorNode 必须输出一些内容,因此您会引入 1 帧延迟,并且 ScriptProcessorNode 会复制从 NaCl 接收到的最近处理的输出。

流程如下所示:

ScriptProcessorNode -> postMessage 输入缓冲区到 NaCl

ScriptProcessorNode -> 将从 NaCl 接收到的最新缓冲区复制到输出缓冲区。

NaCl -> 接收音频样本缓冲区,对其进行处理并将其发回。

如果您希望我在 GitHub 上发布代码或有其他问题,请告诉我。

HTH,约翰

于 2012-12-11T19:41:04.667 回答