我在制作一个小工具输入键盘的同时出发playsound异步播放一下数字的wav文件。在xp系统下使用很正常。在win7下声音播放比较慢。往往第二个数字都显示了第一个的wav文件都没有播放。就直接播放第二wav文件了。这到底是什么问题。有什么办法解决么?

解决方案 »

  1.   

    异步播放就是不等播放完就执行下一步。改成同步播放,去掉SND_ASYNC异步标记就可以。声音应该是固定播放长度,是不是慢,测试一下每步执行的时长就可以了。
      

  2.   

    把wav都加载到内存,再从内存buffer播放(指出SND_MEMORY标志,这样第一个参数指向内存地址)。
      

  3.   

    这就是WIN7缓冲的特点,有时那个转圈不停地转,急死人。
    特别是读与磁盘文件,就是不同步。
      

  4.   

    谢谢建议。试过载入内存了。发现问题的根源在所有的机子都是intel平台的,仅仅我这台是amd平台的。amd在线程处理上好像就是慢半截。
      

  5.   

    文件的播放时间是固定的,这个没有所谓快慢。可能读入会有延时。如果不同步你怎么控制是否播放完整?还是你不需要播放完整?快慢应该测一下时长或者换环境测试。要不帖代码。
    问题出现在AMD平台上,intel平台win7稍微慢点,但察觉不出。AMD平台直接就慢死。