delphi - Winmm.dll无法播放某些WAV声音吗?

标签 delphi winapi audio

显然,Windows对Windows Vista中的音频体系结构进行了一些重大更改。据我了解,Vista及更高版本中未包含某些“旧版编解码器”,但是我不确定这是否是导致问题的原因。

我在Delphi中编程,当前正在使用Windows库中的winmm.dll及其PlaySound方法来播放wav文件。似乎有许多该dll无法播放的WAV文件。有趣的是,Windows Media Player可以播放失败的声音,但是Windows控制面板的声音小程序也不能播放失败的声音,因此我怀疑这可能是我用来播放声音的库的限制,而不是由我直接造成的应用程式。但是,这会导致不良的用户体验,使声音文件无声地失败,而不会通知用户文件某种程度上存在缺陷并且无法使用。

所以...我是否应该使用其他库函数来播放具有更大编解码器支持的WAV声音,并且能够像Windows Media Player一样播放这些损坏的文件,如果没有,是否还有其他函数调用我可以用来测试WAV是否有效/可播放,以便通知用户不支持文件的内部格式?

最佳答案

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

看看Carlos Barbosa的cbAudioPlay组件,因为它提供了一个使用DirectShow的好例子,并且包含您需要的相关库。

关于delphi - Winmm.dll无法播放某些WAV声音吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9627439/

相关文章:

audio - 跨平台音频分析库

android - 可视化工具 onFftDataCapture - byte[] 索引是否代表频率?

Delphi:我自己的计时器的OnTimer事件从未发生

performance - 如何卡住程序的执行?

function - 如何将另一个函数返回的函数分配给函数变量?结果而不是生成函数本身

windows - 更新所有者绘制的控件的最快方法是什么?

c++ - WinAPI - 避免重绘窗口

delphi - 如何获取屏幕右上角的表单位置?

c++ - WinAPI SendInput 代码问题

c# - Xamarin-遍历Android设备上的所有音频文件