我正在尝试使用新支持的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);
对任何想法都会感激不尽!
谢谢!
丹
答案 0 :(得分:1)
不要忘记压缩mp3
文件,而wav
不压缩。
因此,延迟可能是将mp3
文件读入内存并解压缩所需的时间,而wav
文件不需要这样做。
我不确定你是如何验证的。
答案 1 :(得分:0)
那个代码对吗?现在你调用PlaySound(它是同步的),然后是异步版本。对我来说应该播放两次声音。
此外,如果您尝试将PlaySound与SND_ASYNC标志一起使用,您会看到什么行为?
答案 2 :(得分:0)
我实际上添加了我尝试SndPlayAsync的代码,但它与SndPlaySync的工作方式相同。
我实际上缩小了问题 - 即使我尝试使用wav文件 PlaySound(带有Sync标志)并使用SndPlaySync,SndPlaySync运行速度慢两倍:(
我会打开一个关于它的新问题。