Ich habe voll funktionsfähige VLCj-basierte Video-Player wie unten gezeigt.vlcj JPanel zeichnen über mediaPlayerComponent
Arbeits Code
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);
}
}
Änderungen am Code, um das Video zu ziehen über
Was ich brauche, ist das Video ziehen über (zum Beispiel ein Rechteck). Zu diesem Zweck habe ich MyJPanel erstellt.
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);
}
}
Und statt der Zeile:
frame.getContentPane().add(mediaPlayerComponent, BorderLayout.CENTER);
ich hinzugefügt:
frame.getContentPane().add(new MyPanel(mediaPlayerComponent), BorderLayout.CENTER);
Problem:
Nach der Zugabe von MyPanel ich diese Störung erhalte: und keine jede mögliche Video wird angezeigt.
[0000000029d930e0] avi demux error: no key frame set for track 0
[0000000029e035d0] core vout display error: Failed to set on top
Haben Sie ein ['Marquee'] (http://capricasoftware.co.uk/#/projects/vlcj/tutorial/marquee) angeschaut? – trashgod