import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.layout.GridPane; import javafx.scene.media.Media; import javafx.scene.media.MediaPlayer; import javafx.scene.media.MediaView; import javafx.stage.Stage; import javafx.util.Duration; public class MPTest extends Application { public static void main(String[] args) { launch(args); } String MEDIA_URL = "http://reavers.us.oracle.com/flv/oow2010-indexed.flv"; //= "http://beethoven.us.oracle.com/javafx/media/trailers/320x180/SP_Trailer2_UPRX0860H.flv"; MediaPlayer mediaPlayer; @Override public void start(Stage stage) { stage.setTitle("Media Player"); mediaPlayer = new MediaPlayer(new Media(MEDIA_URL)); MediaView mediaView = new MediaView(mediaPlayer); mediaPlayer.setOnReady(new Runnable() { @Override public void run() { log("onReady:"); Duration dur = mediaPlayer.getMedia().getDuration(); log(" duration: " + dur); Duration pos = dur.subtract(Duration.seconds(5)); log(" seeking to pos " + pos); mediaPlayer.seek(pos); log(" starting..."); mediaPlayer.play(); } }); mediaPlayer.setOnEndOfMedia(new Runnable() { @Override public void run() { log("EndOfMedia, pos = " + mediaPlayer.getCurrentTime()); log(" pause"); mediaPlayer.pause(); log(" seek to the begining..."); mediaPlayer.seek(mediaPlayer.getStartTime()); } }); mediaPlayer.setOnPlaying(new Runnable() { @Override public void run() { log("OnPlaying"); } }); mediaPlayer.setOnPaused(new Runnable() { @Override public void run() { log("OnPaused"); } }); GridPane g = new GridPane(); g.setAlignment(Pos.CENTER); g.getChildren().add(mediaView); Scene scene = new Scene(g, 600, 265); stage.setScene(scene); stage.show(); } static void log(String s) { System.out.println(s); System.out.flush(); } }