PlaySound在C哔声但不播放wav文件

在C中,我的PlaySound没有抛出任何错误……但是不是播放我想要的文件,而是发出哔哔声。

有什么建议?

我试过了 :

 PlaySound("song1.wav", NULL, SND_ALIAS | SND_APPLICATION); 

和:

 PlaySound("song1.wav", NULL, SND_FILENAME); 

但我得到了同样的结果。

而不是像你所做的那样使用相对路径:

 PlaySound("song1.wav", NULL, SND_FILENAME); 

使用绝对路径,如:

 PlaySound("F:\\path\\to\\your\\song\\song1.wav", NULL, SND_FILENAME); 

引自PlaySound API描述,msdn.microsoft.com:

PlaySound在以下目录中搜索声音文件:当前目录; Windows目录; Windows系统目录; PATH环境变量中列出的目录; 以及网络中映射的目录列表。

如果函数找不到指定的声音并且未指定SND_NODEFAULT标志,则PlaySound将使用默认的系统事件声音(在您的情况下为BEEP)。

如果该函数既不能找到系统默认条目也不能找到默认声音,则它不会发出声音并返回FALSE

因此,将文件目录路径添加到Windows中的PATH环境变量中。 这应该可以解决你的问题。

我遇到了与OP相同的情况,并为我找到了解决方案。 我的解决方案是消除wav文件的元数据。

发布(日文)

参考post,PlaySound()API无法播放一些使用着名音频工具导出的wav文件。 (如ProTools,CUBASE,StudioOne等…)

消除元数据使其有效。 在博客文章中,他用SoundEngine(日语)打开了一些“麻烦”的wave文件,只是’另存为’新文件以消除wav RIFF元信息。