如何用c ++读取原始音频数据?

时间:2018-02-06 17:57:02

标签: c++ audio wav pcm

我试图对音频文件进行傅里叶变换。到目前为止,我已经设法在this回答的帮助下阅读了文件的标题。 This是输出。

音频格式为1,这意味着PCM和我应该能够轻松地处理数据。但是,这是我无法弄清楚的。

数据二进制是否应该将其转换为浮点数或其他我无法理解的内容?

2 个答案:

答案 0 :(得分:1)

是的,它是二进制文件。具体来说,它签署了16位整数。 您可能希望将其转换为浮点或双精度,具体取决于您的FFT需求。

答案 1 :(得分:0)

我建议您使用单声道输入音频文件...您显示的样本有两个声道(立体声),这会使数据稍微复杂化......对于单声道PCM文件,结构是

two-bytes-sample-A  immediately followed by two-bytes-sample-B ... etc.
在PCM中,每个这样的样本直接对应于模拟音频曲线上的一个点,因为麦克风振膜(或你的耳膜)摆动......注意正确使用数据的字节顺序,每个样本都会产生一个整数使用全部16位使无符号整数从0到(2 ^ 16 - 1)的值从0到65535 ....如果它们是未签名的,请确认您的样本保持在此范围内