在使用AnalyserNode.getFloatFrequencyData方法时,如果总是返回-Infinity,可能是因为没有正确地初始化AnalyserNode。
以下是一个示例代码,展示了如何正确初始化AnalyserNode并使用getFloatFrequencyData方法:
// 创建AudioContext
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
// 创建AnalyserNode
const analyserNode = audioContext.createAnalyser();
// 获取音频数据
const bufferLength = analyserNode.frequencyBinCount;
const dataArray = new Float32Array(bufferLength);
// 连接到音频源
// ... 你的音频源代码 ...
// 将AnalyserNode连接到音频源
sourceNode.connect(analyserNode);
// 分析音频数据
function analyzeAudio() {
analyserNode.getFloatFrequencyData(dataArray);
requestAnimationFrame(analyzeAudio);
}
// 开始分析音频
analyzeAudio();
在这个示例中,首先创建了一个AudioContext实例和AnalyserNode实例。然后,将AnalyserNode连接到音频源(不在代码中展示)。最后,使用getFloatFrequencyData方法获取音频数据,并将其存储在Float32Array中。
为了持续分析音频数据,可以使用requestAnimationFrame方法在每一帧调用analyzeAudio函数。
请注意,这只是一个示例,实际情况可能会根据你的代码和需求有所不同。希望这个示例能够帮助你解决AnalyserNode.getFloatFrequencyData总是返回-Infinity的问题。