在 C 中,我PlaySound
没有抛出任何错误......但不是播放我想要的文件,它只是发出哔哔声。
有什么建议么?
我试过了 :
PlaySound("song1.wav", NULL, SND_ALIAS | SND_APPLICATION);
和:
PlaySound("song1.wav", NULL, SND_FILENAME);
但我得到了同样的结果。
在 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);
引用来自 msdn.microsoft.com 的 PlaySound API 描述:
PlaySound
在以下目录中搜索声音文件:当前目录;Windows 目录;Windows系统目录;PATH
环境变量中列出的目录;以及映射到网络中的目录列表。如果函数找不到指定的声音并且
SND_NODEFAULT
未指定标志,则PlaySound
使用默认的系统事件声音代替(在您的情况下为 BEEP)。如果该函数既找不到系统默认入口也找不到默认声音,则不发出声音并返回
FALSE
。
因此,将文件目录路径添加到PATH
windows 中的环境变量中。那应该可以解决您的问题。
我遇到了与 OP 相同的情况,并为我找到了解决方案。我的解决方案是消除 wav 文件的元数据。
参考帖子,PlaySound() API 无法播放一些使用著名音频工具导出的 wav 文件。(如 ProTools、CUBASE、StudioOne 等。)
消除元数据使其起作用。在博客文章中,他用SoundEngine(日语)打开了一些“麻烦”的波形文件,然后“另存为”新文件以消除 wav RIFF 元信息。