lecture de flux video dans borderLayout.CENTER
Bonjour !
J'essaie de lire une vidéo par le biais d'une classe denommé VideoPlayer et l'intégré dans mon borderLayout.Center de mon application principale ! Problème rien ne se lit !
Voici le code que j'ai dans applicationPilote :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public void borderCenter_actionPerformed (ActionEvent event)
{
videoPlayer = new VideoPlayer (null);
// essaie de lire le fichier vidéo
try
{
videoPlayer.start();
}
catch
(Exception e)
{
// erreur de lecture
System.out.println("Impossible de lire (cause : " + e + ")");
}
} |
Pour applicationFrame :
Code:
1 2 3 4
| public void addborderCenterActionListener (ActionListener listener)
{
contentPane.add ((Component) player, BorderLayout.CENTER);
} |
et pour la classe VideoPlayer
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| import java.awt.Component;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.RealizeCompleteEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class VideoPlayer
{
private Player player;
private String videoFile;
private JFrame mainFrame;
private JPanel videoPanel;
public VideoPlayer(String videoFile)
{
this.videoFile = videoFile;
mainFrame = new JFrame();
videoPanel = new JPanel();
videoPanel.setLayout(new GridLayout(0,1));
mainFrame.getContentPane().add(videoPanel);
mainFrame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
// stop video
stop();
// ferme l'application
System.exit(0);
}
}
);
}
public void start() throws Exception
{
player = Manager.createPlayer(new MediaLocator(videoFile));
player.addControllerListener(new ControllerListener()
{
public void controllerUpdate(ControllerEvent controllerEvent)
{
if(controllerEvent instanceof RealizeCompleteEvent)
{
Component playerComponent = player.getVisualComponent();
if(playerComponent != null)
{
// ajoute le composant vidéo à notre panel
videoPanel.add(playerComponent);
videoPanel.setVisible(true);
mainFrame.pack();
// lance la lecture de la vidéo
player.start();
}
else
{
JOptionPane.showMessageDialog(mainFrame, "Impossible de lire votre vidéo : " + videoFile);
}
}
else if (controllerEvent instanceof EndOfMediaEvent)
{
System.out.println("end of playing : " + videoFile);
}
}
}
);
player.realize();
mainFrame.setVisible(true);
}
public void stop()
{
if(player != null)
{
player.stop();
}
}
} |
J'ai surfé sur le forum et j'ai installé JMF qui fonctionne sans problème sur mon poste... J'ai une interface dans VideoPlayer qu'il faut que j'enleve et que j'affecte le lecteur à mon interface sur application mais impossible = les erreurs s'accumulent !!!