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元信息。