2016-06-11 5 views
1

ビデオの再生中にスライダーを動かす方法は?javafx video player timeSlider

初期化:

BorderPane border = new BorderPane(); 
HBox bar = new HBox(10); 
//Button play = new Button("Play"); 
//Button pause = new Button("Pause"); 

メディア:

Media media = new Media(Paths.get("C://video.mp4").toUri().toString()); 
    MediaPlayer player = new MediaPlayer(media); 
    MediaView mediaView = new MediaView(player); 

ポジショニング:ビデオの再生と私のスライダーの動きを作るためにどのように

bar.getChildren().addAll(play,pause,timeSlider); 
    bar.setAlignment(Pos.CENTER); 
    border.setCenter(mediaView); 
    border.setBottom(bar); 

任意の提案ですか?

編集:

見つかり答え:私は今、同様の問題に取り組んでいます

player.currentTimeProperty().addListener((obs, oldTime, newTime) -> { 
     if (!timeSlider.isValueChanging()) { 
      timeSlider.setValue(newTime.toSeconds()); 
     } 
    }); 
+1

は、[Oracleのメディアチュートリアル](http://docs.oracle.com/javase/8/javafx/media-tutorial/playercontrol.htm)を試してみてください、それは命令とソースを含みスライダをビデオに連結する方法に関するコード。 – jewelsea

答えて

0

。これはあなたのために働く必要があります。

// Listen to the slider. When it changes, seek with the player. 
// MediaPlayer.seek does nothing when the player is stopped, so the play/pause button's handler 
// always sets the start time to the slider's current value, and then resets it to 0 after starting the player. 
InvalidationListener sliderChangeListener = o-> { 
    Duration seekTo = Duration.seconds(timeSlider.getValue()); 
    player.seek(seekTo); 
}); 
timeSlider.valueProperty().addListener(sliderChangeListener); 

// Link the player's time to the slider 
player.currentTimeProperty().addListener(l-> { 
    // Temporarily remove the listener on the slider, so it doesn't respond to the change in playback time 
    // I thought timeSlider.isValueChanging() would be useful for this, but it seems to get stuck at true 
    // if the user slides the slider instead of just clicking a position on it. 
    timeSlider.valueProperty().removeListener(sliderChangeListener); 

    // Keep timeText's text up to date with the slider position. 
    Duration currentTime = player.getCurrentTime(); 
    int value = (int) currentTime.toSeconds(); 
    timeSlider.setValue(value);  

    // Re-add the slider listener 
    timeSlider.valueProperty().addListener(sliderChangeListener); 
});