在C中,我的PlaySound
没有抛出任何错误......但不是播放我想要的文件,而是发出哔哔声。
有什么建议吗?
我试过了:
PlaySound("song1.wav", NULL, SND_ALIAS | SND_APPLICATION);
和
PlaySound("song1.wav", NULL, SND_FILENAME);
但我得到了同样的结果。
答案 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文件的元数据。
参考帖子,PlaySound()API无法播放一些使用着名音频工具导出的wav文件。 (例如ProTools,CUBASE,StudioOne等。)
消除元数据使其有效。 在博客文章中,他开了一些令人不安的'带有SoundEngine(japanese)的wave文件,只需'另存为'消除wav RIFF元信息的新文件。