C++ 在win32上将wav文件解码为原始文件

C++ 在win32上将wav文件解码为原始文件,c++,winapi,audio,wav,C++,Winapi,Audio,Wav,如何在win32上将Windows上包含PCM数据的wav文件(RIFF)解码为原始样本(以便将其馈送至ASIO) 我没有时间重新发明轮子。如果有一个库可以同时执行整个“将wav文件播放到ASIO”操作,那就太好了。不过,ASIO非常简单,并且有许多适用于Windows online的示例。如果我有wav文件作为原始PCM数据馈送给它就好了 我已经尝试过使用libsndfile,但是没有任何关于如何在Windows上使用它的例子,而且它也不会在Windows上编译。(他们交叉编译它并当前发布一个

如何在win32上将Windows上包含PCM数据的wav文件(RIFF)解码为原始样本(以便将其馈送至ASIO)

我没有时间重新发明轮子。如果有一个库可以同时执行整个“将wav文件播放到ASIO”操作,那就太好了。不过,ASIO非常简单,并且有许多适用于Windows online的示例。如果我有wav文件作为原始PCM数据馈送给它就好了

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

必须有一种方法使用MS API来实现这一点。。。这是什么

如果它能把它转换成16位44.1 kHz的音频,这样我就可以把它传送给ASIO了,但我可以把这两位连接在一起,如果有人能给我一个提示,告诉我如何在Windows上将wav文件解码成原始样本,

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


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

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

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


编辑:由于您似乎是为了工作而这样做的,您可能想看看是否考虑使用FFmpeg(因为其他人一直在提供与WinAPI相关的信息,所以您可能不会考虑使用FFmpeg),由于FFmpeg使用LGPL或GPL的版本取决于您使用的选项/配置方式。

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

您能找到或提供解码现有PCM WAV的示例吗文件?感谢您提供解码现有PCM WAV文件的示例。你知道一种使用Windows API解码头而不是手工解析头的方法吗?遗憾的是,不知道,但正如所指出的那样,你将很快拥有“手工”解析的代码,Good Lucky文章指出了你链接到的代码中的问题,并提供了解决方案。是的,我想我主要是将网络用于“指南”关于.wav头格式,但始终由我自己编写实际的解析代码…另请参见文件格式说明。关于格式代码的更多信息此处包含相反的示例(从头创建wav文件):