在Java中播放声音片段时出现大幅延迟

时间:2015-11-30 09:57:07

标签: java audio clip

在我的简单java应用程序中,我为不同的事件播放不同的声音。 我正在使用Java剪辑界面,代码非常相似 通常声音会瞬间播放,但几天或几小时后我就会开始播放声音。我有一个play()方法执行以下操作:

public void play(){
    System.out.println(new Date()+" rewinding file");
    clip.setFramePosition(0);  // Must always rewind!
    System.out.println(new Date()+" Playing Sound File");
    clip.start();
    System.out.println(new Date()+" Sound file stopping or stopped? Not sure");
}

当声音播放没有延迟时,我在日志文件中看到以下内容:

Thu Nov 26 17:17:46 SAST 2015 rewinding file
Thu Nov 26 17:17:46 SAST 2015 Playing Sound File //zero delay!!!

但是时不时地,我没有明显的理由得到以下内容:

Sun Nov 29 06:40:29 SAST 2015 rewinding file
Sun Nov 29 06:48:13 SAST 2015 Playing Sound File //8 minute delay!!!

延迟很大且似乎是随机的,声音片段最多只有1秒钟(简单的哔声)。

对此的任何帮助将不胜感激。

编辑04/12/2015

正如@Rafael Osipov建议我在应用程序中附加了一个分析器,它已经运行了大约18个小时。我没有看到任何东西向我跳出来,所以我在发布延迟时发布时间表,希望有人注意到什么?另外,如果还有其他任何我应该观看/分析以尝试解决问题,请告诉我。

Application Profiler

编辑07/12/2015

嘿所有人,我一直在分析这些方法,而不是遥测,我认为它可能会显示更明显的东西,请看下面的图像,并注意 com.sun.media.sound。 directaudiodevice.nwrite 自我时间(CPU)和总时间(CPU)是所有方法中最高的。 Methods Profiler 既然我的问题与声音有关,你认为这可能是我问题的原因吗?

谢谢!

0 个答案:

没有答案