在win32上将wav文件解码为raw

时间:2010-08-05 19:51:44

标签: c++ winapi audio wav

如何在Windows上将包含Windows上PCM数据的wav文件(RIFF)解码为原始样本(以便我可以将其提供给ASIO)?

我没有时间重新发明轮子。如果那里有一个库可以让整个“将一个wav文件发送到ASIO”的东西,那就太好了。但是,ASIO很简单,并且有许多Windows在线示例。如果只有我将wav文件作为原始PCM数据提供给它!

我试过使用libsndfile,但是没有任何关于如何在Windows上使用它的例子,它不会在Windows上编译。 (他们交叉编译并在当前发布二进制文件。)

有一种方法可以使用MS API来做到这一点......它是什么?

如果它将它转换为16位44.1 kHz音频会很好,这样我就可以将它提供给ASIO,但我可以处理将这两个位连接起来,如果只有有人可以给我一个关于如何解码的提示一个wav文件到Windows上的原始样本,

4 个答案:

答案 0 :(得分:3)

.wav头文件是dead simple (教程),PCM编码数据一旦找到就可以直接送到ASIO(通过解析头部的几个简单字段)

答案 1 :(得分:2)

See this

这封装在Win32上的WAVEFORMATEX结构中。

答案 2 :(得分:1)

如果您获取libsndfile的源代码tarball,您会发现它包含示例/程序/目录中的许多示例程序。

答案 3 :(得分:0)

它们不是Windows API的一部分,但由于我没有太多直接使用它的经验,我只会告诉您一些我知道/已经使用过的工具,它们可以满足您的需求。 / p>

Python有aifc模块。 FFmpeg是另一种选择,如果您不想使用Python,并且可以从您的代码中调用外部程序。

编辑:你似乎正在为工作做这件事,你可能想看看http://ffmpeg.org/legal.html如果你想使用FFmpeg(你可能不会因为其他人一直在给WinAPI相关信息),因为FFmpeg使用LGPL版本或GPL版本,具体取决于您使用的选项/配置方式。