J'ai un lecteur vidéo basé sur VLCj entièrement fonctionnel comme illustré ci-dessous.vlcj JPanel dessine sur mediaPlayerComponent
Code de travail
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.discovery.NativeDiscovery;
/**
* Minimal quick-start example.
*/
public class Example1 {
private final JFrame frame;
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
public static void main(String[] args) {
new NativeDiscovery().discover();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Example1().start("file:///C:/video.avi");
}
});
}
public Example1() {
mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
frame = new JFrame("vlcj quickstart");
frame.setLocation(50, 50);
frame.setSize(1400, 800);
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(mediaPlayerComponent, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(320, 240));
frame.pack();
frame.setVisible(true);
}
private void start(String mrl) {
mediaPlayerComponent.getMediaPlayer().playMedia(mrl);
}
}
des modifications au code afin de tirer sur la vidéo
Ce que je dois est de tirer sur la vidéo (par exemple un rectangle). Pour ce faire, j'ai créé MyJPanel.
class MyPanel extends JPanel {
private EmbeddedMediaPlayerComponent comp;
public MyPanel(EmbeddedMediaPlayerComponent mediaPlayerComponent) {
add(this.comp = mediaPlayerComponent);
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawRect(10, 10, 200, 100);
}
}
Et au lieu de la ligne:
frame.getContentPane().add(mediaPlayerComponent, BorderLayout.CENTER);
I ajouté:
frame.getContentPane().add(new MyPanel(mediaPlayerComponent), BorderLayout.CENTER);
Problème:
Après avoir ajouté MyPanel Je reçois cette erreur: et pas tout la vidéo est en cours d'affichage.
[0000000029d930e0] avi demux error: no key frame set for track 0
[0000000029e035d0] core vout display error: Failed to set on top
Avez-vous regardé un ['Marquee'] (http://capricasoftware.co.uk/#/projects/vlcj/tutorial/marquee)? – trashgod