如何以毫秒为单位获取javaFX音频片段的长度

时间:2018-03-01 07:19:18

标签: audio javafx duration

大家好我想播放一个JavaFX音频片段,然后睡觉这个音频片段完成所需的时间。我在JavaFX AudioClip中找不到任何方法

1 个答案:

答案 0 :(得分:0)

我认为AudioClip并不适合这样的事情,也许是玩真实的" Media更适合这种情况。

你可以尝试这种(不是非常优雅)的方法:只是睡觉并立即检查剪辑是否仍在播放:

AudioClip sound = new AudioClip("mySound.wav");
sound.play();

long start = System.currentTimeMillis();
while (sound.isPlaying())
{
    Thread.sleep(1000);
}
long duration = System.currentTimeMillis() - start;

System.out.println("Played for " + (duration / 1000) + "seconds.");

您也可以尝试从源代码创建Media对象,以获取持续时间。然后,将其播放为AudioClip,并使用Media的持续时间进行睡眠。这需要初始化适当的外汇环境,但是:

AudioClip sound = new AudioClip("mySound.wav");
sound.play();
Thread.sleep((long) new Media("mySound.wav").getDuration().toMillis());