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

时间:2012-10-19 19:03:52

标签: c visual-studio-2010 winapi playsound

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

有什么建议吗?

我试过了:

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

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

但我得到了同样的结果。

3 个答案:

答案 0 :(得分:3)

而不是像你一样使用相对路径:

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

使用绝对路径,如:

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

答案 1 :(得分:3)

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

  

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

     

如果功能找不到指定的声音而且   未指定SND_NODEFAULT标志,PlaySound使用默认值   系统事件声音(在您的情况下是BEEP)。

     

如果该功能既不能找到系统默认条目也不能找到   默认声音,它没有声音并返回FALSE

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

答案 2 :(得分:0)

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

Post (japanese)

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

消除元数据使其有效。 在博客文章中,他开了一些令人不安的'带有SoundEngine(japanese)的wave文件,只需'另存为'消除wav RIFF元信息的新文件。