0

任务是基于标准的网络音频 api 实现一个录音机。仔细研究了两种方式ScriptProcessorNode.onaudioprocessAudioWorkletProcessor.process并没有做出最终决定。官方称 onaudioprocess 自 2014 年以来已被弃用,完全替代的是音频工作者。我是 javascript 新手,也许这个问题听起来很愚蠢,但为什么到今天还积极使用 onaudioprocess 呢?

让我们深入了解细节。AudioWorkletProcessor api 可供 73% 的用户使用,而onaudioprocess api 可供 93% 的用户使用。在接下来的 2 年中,我们可以希望增长 10%。(野生动物园用户)。有许多使用 onaudioprocess 的项目、文章、解决方案。甚至特定任务也可以简单地通过使用 onaudioprocess 来解决。AudioWorklet 不可能有这样的解决方案。AudioWorklet 文档很差,互联网上很少提及。例如,我仍然不明白为什么 WebWorker 知道 blob 是什么,而 AudioWorklet 却不知道(devTools exception: Uncaught ReferenceError: Blob is not defined)。在打字稿中,基本功能的声明类型有很长的开放案例. 这一切都给人一种onaudioprocess比AudioWorklet更活泼的印象。也许 AudioWorklet 更高效但难以实现,或者 javascript 社区不需要网络音频 api?解释一下我为什么要按照官方推荐选择AudioWorklet?

4

1 回答 1

1

你在这里问了很多问题。首先,您会很高兴 Safari 已经实现了 AudioWorklets。请参阅https://wpt.fyi/webaudio

其次,WebWorkers 和 Worklet 是具有不同功能的不同事物。AudioWorklets 是 Worklet,所以 AudioWorklets 只得到 Worklet 的东西,而不是 WebWorker 的东西。

第三,是的,ScriptProcessorNode 已被弃用,但仍有重要用途。您可以在https://www.chromestatus.com/metrics/feature/timeline/popularity/646看到这一点。将其与AudioWorkletNode的https://www.chromestatus.com/metrics/feature/timeline/popularity/2263进行比较。

当然,AudioWorklets 是要走的路,但是当我想要一些快速而肮脏的东西并且不介意在主线程上处理时,我使用 ScriptProcessorNode。但是,如果我正在做一些具有生产质量的事情,我会尝试使用 AudioWorkletNode 来代替。

于 2021-02-18T15:44:56.993 回答