PlaySound用C哔哔声,但不播放wav文件(PlaySound in C beeps but

2019-07-01 09:56发布

在C语言中,我PlaySound不扔的......而是打我想要的文件的任何错误,它就会发出蜂鸣声。

有什么建议?

我试过了 :

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

和:

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

但我得到了同样的结果。

Answer 1:

而不是使用相对路径喜欢你这样做:

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

使用绝对路径,如:

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


Answer 2:

从PlaySound API描述,报价在msdn.microsoft.com:

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

如果函数无法找到指定的声音和SND_NODEFAULT没有指定标志, PlaySound使用默认的系统事件的声音,而不是(在你的情况BEEP)。

如果函数可以发现无论是系统默认的表项,也不默认的声音,它不会发出声音并返回FALSE

因此,添加文件目录路径到PATH环境变量窗口。 这应该解决您的问题。



Answer 3:

我是在与像OP的同样情况的麻烦和发现解决方案适合我。 我的解决办法是消除wav文件的元数据。

邮报(日语)

参照后,PlaySound()API无法播放出口与国内知名的音频工具,一些wav文件。 (如使用ProTools,CUBASE,StudioOne等。)

和消除元数据使得它的工作。 在博客中,他开了一些“麻烦”波形文件与SoundEngine(日本) ,只是“另存为”的新文件,以消除WAV RIFF元信息。



文章来源: PlaySound in C beeps but does not play wav file