在Windows Mobile 6 SndPlaySync中缓慢播放Mp3

时间:2009-11-15 16:10:47

标签: windows-mobile mp3 windows-mobile-6

我正在尝试使用新支持的mp3播放功能SndPlaySync(也尝试过SndPlayAsync)从我的winows移动应用程序播放mp3文件。 我做了最简单的程序,只是将函数附加到WM_KEYDOWN事件。 (下面附有代码)。但是,之前总是有0.5-2秒的等待时间 该程序播放MP3。当我只是使用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);

对任何想法都会感激不尽!

谢谢!

3 个答案:

答案 0 :(得分:1)

不要忘记压缩mp3文件,而wav不压缩。

因此,延迟可能是将mp3文件读入内存并解压缩所需的时间,而wav文件不需要这样做。

我不确定你是如何验证的。

答案 1 :(得分:0)

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

此外,如果您尝试将PlaySound与SND_ASYNC标志一起使用,您会看到什么行为?

答案 2 :(得分:0)

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

我实际上缩小了问题 - 即使我尝试使用wav文件 PlaySound(带有Sync标志)并使用SndPlaySync,SndPlaySync运行速度慢两倍:(

我会打开一个关于它的新问题。