【问题标题】:How to get sample rate from wav file?如何从 wav 文件中获取采样率?
【发布时间】:2019-12-17 17:36:07
【问题描述】:

我正在使用双簧管库进行声音播放

https://github.com/google/oboe/blob/master/docs/FullGuide.md

作为声音文件,我使用.wav 文件。据我所知,有一种方法可以从 .wav 文件头获取 - 采样率。

所以,问题是 - 如何在 C++ 中以编程方式从任意 .wav 文件中读取采样率?

【问题讨论】:

  • 问题是如何在 C++ 中以编程方式从任意 wav 文件中读取采样率?
  • 您是在问如何读取文件,WAV 文件中的头在哪里,或者如何理解 WAV 文件头?
  • @foolo 是的,编辑了我的问题
  • 首先了解wav format/header 的结构。然后编写代码来读取和解析它。
  • 根据documentation,您可以使用getSampleRate() 获得AudioStream 的采样率,但这可能不是您的最佳方式。

标签: c++ audio wav oboe


【解决方案1】:

C++ 中没有用于解析 wav 文件的标准功能。

标头索引 24-27 处的字节表示一个 32 位整数,它是以 Hz 为单位的采样率。

【讨论】:

  • 但是,也许您熟悉oboe lib?有没有办法使用这个库获得sample rate
  • @AlekseyTimoshchenko 不幸的是,我不熟悉图书馆。
【解决方案2】:

如果您想编写自己的 WAV 解析器,不妨看看这个问题(请注意代码中的一个错误,我的回答中已更正):printing of a wav header in c

但使用库可能更方便。例如,libsndfile 有一个 API sf_open,它返回一个包含采样率的 SF_INFO 结构。

【讨论】:

  • 但是,也许你熟悉oboe lib?有没有办法使用这个库获得sample rate
猜你喜欢
  • 2016-02-01
  • 2011-03-04
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-28
  • 2017-11-05
相关资源
最近更新 更多