选择web api录音



任务是实现一个基于标准web音频api的记录器。仔细研究了两种方式ScriptProcessorNode。onaudioprocess,AudioWorkletProcessor。进程没有做出最后的决定。官方表示,onaudioprocess自2014年起已被弃用,取而代之的是audio workers。我是javascript的新手,也许这个问题听起来很愚蠢,但为什么onaudioprocess到今天还在积极使用?

让我们深入了解细节。AudioWorkletProcessor api可供73%的用户使用,而onaudioprocess api可供93%的用户使用。在接下来的两年里,我们可以期望有10%的增长。(safari用户)。有很多项目、文章和解决方案都使用了onaudioprocess。即使是特定的任务也可以通过使用onaudioprocess来解决。AudioWorklet不可能提供这样的解决方案。AudioWorklet文档很差,在互联网上很少被提及。例如,我仍然不明白为什么WebWorker知道blob是什么,但AudioWorklet不(devTools异常:Uncaught ReferenceError: blob未定义)。在typescript中,对于基本功能的声明类型有长时间打开的情况。所有这些都给人的印象是onaudioprocess比AudioWorklet更活泼。也许AudioWorklet更有生产力,但难以实现,或者是javascript社区不需要web音频api ?解释为什么我应该根据官方推荐选择AudioWorklet ?

你问了很多问题。首先,您会很高兴地知道Safari已经实现了AudioWorklets。参见https://wpt.fyi/webaudio。

第二,WebWorkers和Worklets是不同的东西,具有不同的功能。AudioWorklets是Worklets,所以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代替。

最新更新