如何在没有Web Audio的情况下直接从ArrayBuffer获取通道数据API?
How to get channel data directly from ArrayBuffer without Web Audio API?
在我的网络应用程序中,我使用 HTML5 音频进行音频播放。但是因为我需要音频文件的channelData,所以需要在应用启动的时候进行如下操作:
- 使用网络音频将 ArrayBuffer 解码为 AudioBuffer API
- 调用 audioBuffer.getChannelData(0)
- 处理 channelData 并转储 audioBuffer
- 使用 channelData 我可以将音频信号绘制到 canvas
有什么方法可以从原始数据(ArrayBuffer)中计算出channelData吗?我的应用程序仅支持带 PCM 16 位的 WAVE。
我知道 WAVE 格式的结构以及如何通过 Javascript 从原始数据中读取值,但我不明白 getChannelData()
如何计算它的值。我在网上一无所获。
getChannelData
没什么神奇的;它只是 returns 来自 AudioBuffer
的数据。如果您有一个 16 位 PCM WAV 文件,您可以轻松地将其解码为 Javascript 中的 16 位 PCM 值。要获得 getChannelData
会产生的结果,请取该 16 位值并除以 32768 以获得介于 -1 和 1 之间的浮点值。
在我的网络应用程序中,我使用 HTML5 音频进行音频播放。但是因为我需要音频文件的channelData,所以需要在应用启动的时候进行如下操作:
- 使用网络音频将 ArrayBuffer 解码为 AudioBuffer API
- 调用 audioBuffer.getChannelData(0)
- 处理 channelData 并转储 audioBuffer
- 使用 channelData 我可以将音频信号绘制到 canvas
有什么方法可以从原始数据(ArrayBuffer)中计算出channelData吗?我的应用程序仅支持带 PCM 16 位的 WAVE。
我知道 WAVE 格式的结构以及如何通过 Javascript 从原始数据中读取值,但我不明白 getChannelData()
如何计算它的值。我在网上一无所获。
getChannelData
没什么神奇的;它只是 returns 来自 AudioBuffer
的数据。如果您有一个 16 位 PCM WAV 文件,您可以轻松地将其解码为 Javascript 中的 16 位 PCM 值。要获得 getChannelData
会产生的结果,请取该 16 位值并除以 32768 以获得介于 -1 和 1 之间的浮点值。