3

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

有什么建议么?

我试过了 :

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

和:

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

但我得到了同样的结果。

4

3 回答 3

4

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

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

使用绝对路径,例如:

PlaySound("F:\\path\\to\\your\\song\\song1.wav", NULL, SND_FILENAME); 
于 2012-10-19T19:16:52.983 回答
3

引用来自 msdn.microsoft.com 的 PlaySound API 描述:

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

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

如果该函数既找不到系统默认入口也找不到默认声音,则不发出声音并返回FALSE

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

于 2012-10-19T19:17:49.657 回答
0

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

邮政(日文)

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

消除元数据使其起作用。在博客文章中,他用SoundEngine(日语)打开了一些“麻烦”的波形文件,然后“另存为”新文件以消除 wav RIFF 元信息。

于 2015-09-14T07:54:22.907 回答