Winmm.dll不会播放某些wav声音?

时间:2012-03-09 00:51:55

标签: delphi winapi audio

显然,Windows对Windows Vista中的音频架构进行了一些重大更改。根据我的理解,一些“遗留编解码器”不包含在Vista及以上,但我不确定这是否是问题的原因。

我正在使用Delphi进行编程,目前正在使用Windows库中的winmm.dll及其PlaySound方法来播放wav文件。看起来这个dll无法播放的WAV文件很多。有趣的是,Windows Media Player可以播放失败的声音,但Windows控制面板声音小程序无法播放失败的声音,所以我怀疑它可能是我用来播放声音的库的限制,而不是直接由我造成的应用程序。但是,这会导致糟糕的用户体验,使声音文件无声地失败,而不会通知用户该文件有些缺陷且无法使用。

所以...是否有一个不同的库函数,我应该使用它来播放具有更强编解码器支持的WAV声音,并且能够播放这些损坏的文件,如Windows Media Player可以,或者如果没有,是否存在另一个函数调用,我可以用来测试WAV是否有效/可播放,所以我可以通知用户不支持文件的内部格式?

1 个答案:

答案 0 :(得分:0)

Window Media Player使用DirectShow,与MCI下的PlaySound相比,它可以提供更好的性能和更大的灵活性。但是,与MCI相比,使用DirectShow播放声音似乎需要付出很多努力。

请查看Carlos Barbosa的cbAudioPlay组件,因为它提供了使用DirectShow的一个很好的示例,并包含您需要的关联库。