mardi 10 mars 2015

JavaFX periodically playing FLV video in JFXPanel



I am developing in Java SE 7. I am using JavaFX in Swing application for periodically playing flv video in JFXPanel.



public class MyVideoPlayer {

public MyVideoPlayer(final JLayeredPane myPanel, final String mediaURI) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
initAndShowGUI(ballMixerPnl, mediaURI);
}
});
}

private static void initAndShowGUI(JLayeredPane myPanel, final String mediaURI) {
// This method is invoked on the EDT thread
final JFXPanel fxPanel = new JFXPanel();
myPanel.add(fxPanel);

Platform.runLater(new Runnable() {
@Override
public void run() {
initAndPlayVideo(fxPanel, mediaURI);
}
});

}

private static void initAndPlayVideo(JFXPanel fxPanel, String mediaURI) {
Group root = new Group();
Scene scene = new Scene(root, 444, 260);

Media media = new Media(mediaURI);
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);
mediaPlayer.setAutoPlay(true);

// create mediaView and add media player to the viewer
MediaView mediaView = new MediaView(mediaPlayer);
mediaView.setScaleX(0.92);
mediaView.setScaleY(0.92);
mediaView.setX(-23);
mediaView.setY(-13);
root.getChildren().add(mediaView);
fxPanel.setScene(scene);
fxPanel.setVisible(true);
}

public static void removeMyVideoPlayer() {
Platform.setImplicitExit(false);
}}


I am playing video by creating



new MyVideoPlayer(myPanel, mediaURI);


and I am stopping it by calling



MyVideoPlayer.removeMyVideoPlayer();


After a couple of successful iterations my application freezes and stop responding.

Please advise what I am doing wrong here? Maybe some better solution for this problem?

Thanks.




Aucun commentaire:

Enregistrer un commentaire