如何在没有 Web Audio API 的情况下直接从 ArrayBuffer 获取通道数据?



在我的Web应用程序中,我使用HTML5音频进行音频播放。但是因为我需要音频文件的channelData,所以我需要在应用程序启动时执行以下步骤:

  1. 使用 Web Audio API 将 ArrayBuffer 解码为 AudioBuffer
  2. 调用 audioBuffer.getChannelData(0(
  3. 处理通道数据并转储音频缓冲区
  4. 使用通道数据,我可以将音频信号绘制到画布上

有没有办法可以从原始数据(ArrayBuffer(计算通道数据?我的应用程序仅支持带有 PCM 16 位的 WAVE。

我知道 WAVE 格式的结构以及如何通过 Javascript 从原始数据中读取值,但我不明白getChannelData()如何计算其值。我在网上没有找到任何关于它的信息。

getChannelData

没有什么神奇之处;它只是从AudioBuffer返回数据。 如果你有一个 16 位 PCM WAV 文件,你可以在 Javascript 中轻松地将其解码为 16 位 PCM 值。 要获得getChannelData会产生的结果,请取该 16 位值除以 32768 以获得介于 -1 和 1 之间的浮点值。

最新更新