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