1

我实际上正在使用 Web Audio API 和 React 开发一个项目,以进行音频可视化。我的目标之一是从我的音频文件中获取完整的(累积的?)频率数据。

实际上我正在使用AudioContextwithcreateMediaElementSource()方法,然后我得到这样的数据:

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 时可能存在特殊性?

无论如何,任何帮助都会很棒,因为我被这个问题困住了,找不到解决它的方法。

预先感谢您的帮助!

4

0 回答 0