1

我正在尝试使用新支持的 mp3 播放功能 SndPlaySync(也尝试过 SndPlayAsync)从我的 winows 移动应用程序播放 mp3 文件。我做了一个最简单的程序,只是将函数附加到一个 WM_KEYDOWN 事件。(下面附上代码)。但在程序播放 mp3 之前,仍然需要等待 0.5-2 秒。当我简单地使用 PlaySound 并尝试播放 .wav 文件时,它可以正常工作。我能做些什么?

代码 :

这工作太慢了

case WM_KEYDOWN: 
    PlaySound(c_szMid,NULL,NULL);
    HSOUND hSound;
    HRESULT hr;
    SndOpen(c_szMid, &hSound);
    hr = SndPlayAsync(hSound, 0);
    hr = SndClose(hSound);

这工作得很快:

case WM_KEYDOWN: 
    PlaySound(c_szMid,NULL,NULL);

将不胜感激任何想法!

谢谢!

4

3 回答 3

1

不要忘记mp3文件是压缩的,而 awav不是。

因此延迟可能是将mp3文件读入内存并解压缩所需的时间,而文件不一定会发生这种情况wav

不过,我不确定您将如何验证这一点。

于 2009-11-15T16:14:51.197 回答
0

我实际上在尝试 SndPlayAsync 的地方添加了代码,但它与 SndPlaySync 的工作方式相同。

我实际上缩小了问题的范围 - 即使我尝试使用 PlaySound(带同步标志)和使用 SndPlaySync 播放 wav 文件,SndPlaySync 的运行速度也慢了一倍:(

我会提出一个关于它的新问题。

于 2009-11-16T09:35:42.057 回答
0

那个代码对吗?现在您调用 PlaySound(同步),然后调用异步版本。对我来说,这应该是两次播放声音。

此外,如果您尝试使用带有 SND_ASYNC 标志的PlaySound,您会看到什么行为?

于 2009-11-15T16:37:10.487 回答