gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 08:00:32 25 4
gpt4 key购买 nike

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

我发现 ScriptProcessoronaudioprocess 事件仍然在 offlineAudioContext 中触发,这是我可以用来调用的唯一事件源Analyser 节点的 getByteFrequencyData。如下:

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();

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

我在这里做错了什么吗?或者 Analyser 不适合在 offlineContext 中使用。

这是fiddle使用相同的代码。

最佳答案

另一种方法是使用可用于 OfflineAudioContextsuspendresume 方法。暂停后,您可以使用分析仪节点获取所需的时域和/或频域数据。由于上下文已停止,因此效果很好。如果您要多次执行此操作,则需要安排下一次的停留时间,然后再继续。

不幸的是,据我所知,只有 Chrome 为 OfflineAudioContext 实现了 挂起

关于javascript - 网络音频离线上下文和分析器节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25464998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com