我实际上正在使用 Web Audio API 和 React 开发一个项目,以进行音频可视化。我的目标之一是从我的音频文件中获取完整的(累积的?)频率数据。
实际上我正在使用AudioContext
withcreateMediaElementSource()
方法,然后我得到这样的数据:
const [audioFrequencyData, setAudioFrequencyData] = useState([])
useEffect(() => {
const getFrequencyData = () => {
audioAnimationFrameId.current = requestAnimationFrame(getFrequencyData)
const data = new Uint8Array(200)
audioAnalyzer.getByteFrequencyData(data)
setAudioFrequencyData([...audioFrequencyData, data])
}
if (audioAnalyzer && isAudioPlaying) getFrequencyData()
return () => cancelAnimationFrame(audioAnimationFrameId.current)
}, [isAudioPlaying, audioAnalyzer])
我试图获取累积的数据,setAudioFrequencyData([...audioFrequencyData, data])
但在我的状态下我仍然只得到一个 Uint8Array,只有当前的频率数据。我想我在getByteFrequencyData()
工作方式上遗漏了一些东西,但我可以找到什么......或者在使用 Uint8Arrays 时可能存在特殊性?
无论如何,任何帮助都会很棒,因为我被这个问题困住了,找不到解决它的方法。
预先感谢您的帮助!