小编Nie*_*iek的帖子

将基于脚本处理器的应用程序移植到audioworklet

由于旧的 Webaudio 脚本处理器自 2014 年以来已被弃用,并且 Audioworklets 在 Chrome 64 中出现,因此我决定尝试一下。但是我在移植我的应用程序时遇到了困难。我将从一篇好文章中举两个例子来证明我的观点。

首先是脚本处理器方式:

var node = context.createScriptProcessor(1024, 1, 1);
node.onaudioprocess = function (e) {
  var output = e.outputBuffer.getChannelData(0);
  for (var i = 0; i < output.length; i++) {
    output[i] = Math.random();
  }
};
node.connect(context.destination);
Run Code Online (Sandbox Code Playgroud)

另一种填充缓冲区然后播放它:

var node = context.createBufferSource(), buffer = 
context.createBuffer(1, 4096, context.sampleRate), data = buffer.getChannelData(0);

for (var i = 0; i < 4096; i++) {
  data[i] = Math.random();
}

node.buffer = buffer;
node.loop = true;
node.connect(context.destination);
node.start(0);
Run Code Online (Sandbox Code Playgroud)

两者之间的最大区别是第一个在播放期间用新数据填充缓冲区,而第二个则预先生成所有数据。 …

javascript scriptprocessor web-audio-api

5
推荐指数
1
解决办法
2727
查看次数