delphi “winmm.dll”不会播放某些wav声音?

igsr9ssn  于 2023-11-18  发布在  其他
关注(0)|答案(1)|浏览(138)

显然,Windows对Windows Vista中的音频架构进行了一些重大更改。
据我所知,一些“遗留编解码器”不包括在Vista和更高版本中,但我不确定这是否是问题的原因。
我正在用 Delphi 编程,目前正在使用Windows库中的C:\WINDOWS\System32\winmm.dll及其PlaySound method来播放波形音频文件格式(WAV)文件。
似乎有一些WAV文件winmm.dll无法播放。
有趣的是,Windows Media Player可以播放失败的声音,而Windows控制面板声音小程序不能。因此,我怀疑无法播放声音可能是由于我使用的库的限制,而不是直接由我的应用程序引起的。
尽管如此,它会导致一个糟糕的用户体验,让声音文件默默地失败,而没有任何通知用户该文件有缺陷,无法使用。
有没有一个不同的库函数,我应该使用,而不是播放WAV声音与更好的编解码器支持,这将能够发挥这些破碎的文件一样,Windows媒体播放器可以?
如果没有,是否有另一个函数调用我可以用来测试WAV是否有效/可播放,这样我就可以通知用户文件的内部格式不受支持?

j13ufse2

j13ufse21#

Windows Media Player使用DirectShow,它比MCI下的PlaySound提供更好的性能和更大的灵活性。然而,与MCI相比,使用DirectShow播放声音似乎要花费很多精力。
看看卡洛斯·巴博萨的cbAudioPlay组件,因为它提供了一个使用DirectShow的很好的示例,并包含您需要的相关库。

相关问题