我有一个预定的线程,每半秒左右运行一次,每次播放一个音频剪辑,在每个周期之前调用剪辑的 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);
但第一次播放后就不再播放了。代码运行,但声音不播放。有什么想法吗?
最佳答案
易于修复!
您只需要添加重置媒体位置的步骤即可。您可以使用 clip.setFramePosition(0)
或 clip.setMicrosecondPosition(0)
来返回到剪辑的开头。 start() 方法只是从最后一个媒体位置开始,即使它是文件的末尾。
if (clipF5.isRunning())
{
clipF5.stop();
clipF5.setFramePosition(0);
}
clipF5.start();
我假设您的剪辑长度不到 30 秒!
关于java - 重复的音频剪辑无法播放 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58628083/