【问题标题】:How to read raw audio data in c++?如何在 C++ 中读取原始音频数据?
【发布时间】:2018-07-16 21:05:09
【问题描述】:

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

音频格式为 1,这意味着 PCM,我应该很容易能够处理数据。然而,这是我想不通的。

数据是二进制的,我应该将它转换为浮点数还是我无法理解的其他东西?

【问题讨论】:

标签: c++ audio wav pcm


【解决方案1】:

是的,它是二进制的。具体来说,它是有符号的 16 位整数。 您可能需要根据您的 FFT 需求将其转换为浮点数或双精度数。

【讨论】:

    【解决方案2】:

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

    two-bytes-sample-A  immediately followed by two-bytes-sample-B ... etc.
    

    在 PCM 中,每个这样的样本直接对应于模拟音频曲线上的一个点,因为麦克风振膜(或您的耳膜)会摆动……注意正确使用数据的字节序,每个样本都会产生一个整数使用所有 16 位,因此无符号整数的值从 0 到 (2^16 - 1),即 0 到 65535 .... 确认您的样本保持在此范围内(如果它们是无符号的)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      相关资源
      最近更新 更多