MediaPlayer在seek()调用之前不会播放

时间:2019-02-06 13:00:09

标签: java javafx

我正在尝试在javafx中创建简单的mp3播放器,但是直到我在MediaPlayer实例上调用seek()方法之后,音频才会播放。

public class Main extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    private MediaPlayer mediaPlayer;

    @Override
    public void start(Stage stage) throws Exception {
        Media media = new Media(getClass().getResource("/test.mp3").toURI().toString());
        mediaPlayer = new MediaPlayer(media);

        mediaPlayer.statusProperty().addListener((observable, oldValue, newValue) -> {
            System.out.println(newValue);
            if(newValue == MediaPlayer.Status.READY) {
                mediaPlayer.setAutoPlay(true);
                mediaPlayer.play();
            }
        });
    }
}

控制台输出为:

READY
PLAYING

,但是播放器无法开始播放音频。如果我使用seek()方法添加另一个,则开始播放。

mediaPlayer.statusProperty().addListener((observable, oldValue, newValue) -> {
    System.out.println(newValue);
    if(newValue == MediaPlayer.Status.READY) {
        mediaPlayer.setAutoPlay(true);
        mediaPlayer.play();
    } else if(newValue == MediaPlayer.Status.PLAYING) {
        mediaPlayer.seek(Duration.ONE);
    }
});

它是JavaFX中的错误还是丢失了某些东西?我使用JDK11,在Mac上采用openjfx进行openjdk构建。

0 个答案:

没有答案