我用PlaySound(HInstance,'myWav01');来播放声音,有明显延迟。怎么解决?
如果改用MediaPlayer播放,又有几个明显问题:
1. 声音文件无法放到资源文件中
2. MediaPlayer的FileName属性只能一次设置一个文件名,如果在程序中动态改变文件名以播放不同的声音,也会有明显的延迟。
PlaySound()和MediaPlayer还有一个共同的毛病:假如每按一次按钮发一次声,当操作很快,就会出现发不出声的情况。
能否将声音在程序启动时调入内存,播放时直接从内存中取?

解决方案 »

  1.   

    MediaPlayer当操作很快,就会出现发不出声的问题可以解决,就是不用它自带的按钮,而是在自己画上去的按钮中写代码控制,先stop,再close,在赋fileName,再Open,试试看!
      

  2.   

    PlaySound(pchar(资源名称),hInstance,SND_RESOURCE or SND_ASYNC or SND_LOOP);
    //上面进行异步播放
      

  3.   

    to My_first(海浪):
    是我写错了,我就是用的PlaySound('myWav01',HInstance,SND_RESOURCE);
    按我上面的写法,编译肯定通不过,对吧^_^
      

  4.   

    playsound(pchar('D:\tmp\hello.wav'),0,SND_ASYNC or SND_FILENAME);
      

  5.   

    to My_first(海浪):
    没有明显改善,实际上我认为硬盘I/O不会比从资源中取来得快。其实我们见到的各种软件都没有这种问题,当有频繁操作时,前面未完的声音会被立刻终止,马上响应后面的操作,没有延迟或发不出声音的情况,或者说感觉不到。他们是怎么做的呢?
      

  6.   

    楼主,告诉我playsound()引用哪个单元?
      

  7.   

    playsound(pchar('D:\tmp\hello.wav'),0,SND_ASYNC or SND_FILENAME);
    这个不会出现时间延迟啊,我的很正常,当声音没有播放完时又执行该函数时,声音是从头开始的,