首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web音频API处理器结果

Web音频API处理器结果
EN

Stack Overflow用户
提问于 2022-01-11 14:50:55
回答 1查看 167关注 0票数 0

我正在用JS做一些音频处理,使用Web音频API,所以我创建了一个自定义的音频Worklet处理器,其中我正在处理一些音频。

下面是一个小例子。

代码语言:javascript
复制
class MyProcessor extends AudioWorkletProcessor {
  process (inputs, outputs, parameters) {
    const someProcessedNumber = cppApiProcessor.process(inputs,outputs,parameters);
    return true; // to keep the processor alive
  }
}

您可以看到变量someProcessedNumber来自一个cppApi,我不知道如何让外部JS世界知道这一点,因为Processor返回boolean (不管是否保持节点活动),而且我不能在outputs中访问数据。(我不想改变输出的音频,只要处理并给出一个数字)我怎么能做到呢?有更好的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-11 16:19:57

您可以使用portAudioWorkletProcessor将数据发送回主线程(或任何其他线程)。

代码语言:javascript
复制
this.port.postMessage(someProcessedNumber);

每个AudioWorkletNode都有一个port,可以用来接收消息。

使用MessagePort将在音频线程上生成一些垃圾,这会使垃圾收集不时运行。它也不是传输数据的最有效的方式。

如果这是一个问题,您可以使用SharedArrayBuffer代替,AudioWorkletProcessor用来写数据,AudioWorkletNode用来读取数据。

ringbuf.js是一个旨在使这个过程尽可能简单的库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70668787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档