网络音频离线上下文和分析器节点

zya*_*zya 5 javascript web-audio-api

是否可以使用Analyser其中的节点offlineAudioContext进行频率分析?

我发现ScriptProcessor'sonaudioprocess事件仍然在 中触发offlineAudioContext,这是我可以用来调用getByteFrequencyDataNode.js 的唯一事件源Analyser。如下:

var offline = new offlineAudioContext(1, buffer.length, 44100);
var bufferSource = offline.createBufferSource();
bufferSource.buffer = buffer;

var analyser = offline.createAnalyser();
var scp = offline.createScriptProcessor(256, 0, 1);

bufferSource.connect(analyser);
scp.connect(offline.destination); // this is necessary for the script processor to start

var freqData = new Uint8Array(analyser.frequencyBinCount);
scp.onaudioprocess = function(){
    analyser.getByteFrequencyData(freqData);
    console.log(freqData);
   // freqData is always the same.
};

bufferSource.start(0);
offline.startRendering();
Run Code Online (Sandbox Code Playgroud)

这里的问题是freqData数组总是相同的并且永远不会改变。看起来好像它只分析缓冲区的一部分。

我在这里做错了什么吗?或者Analyser不打算在 中使用offlineContext

这是具有相同代码的小提琴。

cwi*_*lso 2

该分析器并不是真正打算在离线上下文中使用;事实上,它最初被命名为“RealtimeAnalyser”。但更重要的是,现在您也无法在离线环境中从脚本处理器获得一致的功能。

  • AnalyserNode 和 OfflineAudioContext 仍然是这种情况吗?或者是否可以在离线模式下对 BufferSource 进行频率分析? (3认同)