提问者:小点点

重复的音频剪辑无法播放- Java


我有一个计划线程,大约每半秒运行一次,每次播放一个音频剪辑,在每个循环之前对剪辑调用stop(),以便再次start()

public AudioThread() {
    Clip clipF5 = AudioSystem.getClip();
    AudioInputStream inputF5 = AudioSystem.getAudioInputStream(Main.class.getResourceAsStream("sound.wav"));
    clipF5.open(inputF5);
}

ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();

exec.scheduleAtFixedRate(new Runnable() {
    public void run() {
        if (clipF5.isRunning()) { clipF5.stop(); }

        clipF5.start();
    }
}, 1, interval, TimeUnit.MICROSECONDS);

但第一次之后就不再播放了。代码运行,但声音不播放。有什么想法吗?


共1个答案

匿名用户

容易修理!

你只需要增加重置媒体位置的步骤。您可以使用< code > clip . setframeposition(0)或< code > clip . setmicrosecondposition(0)返回到剪辑的开头。start()方法只是从最后一个媒体位置开始,即使它是文件的结尾。

if (clipF5.isRunning()) 
{
    clipF5.stop(); 
    clipF5.setFramePosition(0);
}

clipF5.start();

我假设你的剪辑长度不到30秒!