package cameravlctest; import java.awt.BorderLayout; import java.awt.Color; import java.awt.image.BufferedImage; import java.util.concurrent.CompletableFuture; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.plaf.basic.BasicComboBoxRenderer; import uk.co.caprica.vlcj.player.base.MediaPlayer; import uk.co.caprica.vlcj.player.base.MediaPlayerEventAdapter; import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent; import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer; import uk.co.caprica.vlcj.player.embedded.videosurface.ComponentVideoSurface; public class Video extends JPanel { private EmbeddedMediaPlayer embeddedMediaPlayer = null; private ComponentVideoSurface videoSurface = null; private MyMediaPlayerEventAdapter myMediaPlayerEventAdapter = null; private JPanel panel = null; private EmbeddedMediaPlayerComponent mediaPlayer; public Video() { try { this.videoSurface = CameraVLCTest.mediaPlayerFactory.videoSurfaces().newVideoSurface(this); this.embeddedMediaPlayer = CameraVLCTest.mediaPlayerFactory.mediaPlayers().newEmbeddedMediaPlayer(); this.embeddedMediaPlayer.videoSurface().set(videoSurface); this.embeddedMediaPlayer.fullScreen().set(true); this.panel = new JPanel(); this.panel.setBackground(Color.black); this.panel.setLayout(new BorderLayout()); embeddedMediaPlayer = CameraVLCTest.mediaPlayerFactory.mediaPlayers().newEmbeddedMediaPlayer(); embeddedMediaPlayer.videoSurface().set(this.videoSurface); this.myMediaPlayerEventAdapter = new MyMediaPlayerEventAdapter(); // this.embeddedMediaPlayer = CameraVLCTest.mediaPlayerFactory.mediaPlayers().newEmbeddedMediaPlayer(); // this.embeddedMediaPlayer.events().addMediaPlayerEventListener(myMediaPlayerEventAdapter); //this.embeddedMediaPlayer.media().prepare(mrl); // this.embeddedMediaPlayer.media().play("rtsp://admin:Aluvisa1@172.16.11.236/", new String[]{"dummy","-dummy","--dummy"}); mediaPlayer = new EmbeddedMediaPlayerComponent(); mediaPlayer.mediaPlayer().events().addMediaPlayerEventListener(myMediaPlayerEventAdapter); mediaPlayer.mediaPlayer().fullScreen().set(true); this.setLayout(new BorderLayout()); this.add(mediaPlayer,BorderLayout.CENTER); } catch (Exception exception) { exception.printStackTrace(); } } public void play(String mrl) { mediaPlayer.mediaPlayer().media().play("rtsp://admin:Aluvisa1@172.16.11.236/"); loadSnapshot(); } public void loadSnapshot() { CompletableFuture.runAsync(() -> { try { Thread.sleep(10 * 1000); } catch (InterruptedException ex) { Logger.getLogger(Video.class.getName()).log(Level.SEVERE, null, ex); } JLabel labelSnapshot = new JLabel(); { labelSnapshot.setIcon(new ImageIcon(mediaPlayer.mediaPlayer().snapshots().get())); } this.removeAll(); this.revalidate(); this.add(labelSnapshot, BorderLayout.CENTER); }); } private class MyMediaPlayerEventAdapter extends MediaPlayerEventAdapter { @Override public void opening(MediaPlayer mp) { System.out.println("Opening"); } @Override public void playing(MediaPlayer mp) { System.out.println("Playing"); } @Override public void paused(MediaPlayer mp) { System.out.println("Paused"); } @Override public void stopped(MediaPlayer mp) { System.out.println("Paused"); } @Override public void finished(MediaPlayer mp) { System.out.println("Paused"); } @Override public void error(MediaPlayer mp) { System.out.println("Error"); } @Override public void snapshotTaken(MediaPlayer mediaPlayer, String filename) { System.out.println("Snapshot taken"); } } }