/** * If there is an associated media player then make sure the video surface is attached. */ void attachVideoSurface() { if (mediaPlayer instanceof EmbeddedMediaPlayer) { ((EmbeddedMediaPlayer) mediaPlayer).videoSurface().attachVideoSurface(); } }
protected final void onBeforePlay() { videoSurface().attachVideoSurface(); }
/** * Get the video surface component. * <p> * This method will only be used if the video surface is a {@link ComponentVideoSurface} so we can forgo some * checks. * * @return */ private Component getComponent() { return ((ComponentVideoSurface) mediaPlayer.videoSurface().getVideoSurface()).component(); }
@Override public void actionPerformed(ActionEvent e) { mediaPlayer.videoSurface().set(previewVideoSurface); mediaPlayer.videoSurface().attachVideoSurface(); } });
@Override public void actionPerformed(ActionEvent e) { mediaPlayer.videoSurface().set(mainVideoSurface); mediaPlayer.videoSurface().attachVideoSurface(); } });
if (mediaPlayer.videoSurface().getVideoSurface() instanceof ComponentVideoSurface) {
public CaptureTest() { canvas = new Canvas(); canvas.setBackground(Color.black); contentPane = new JPanel(); contentPane.setBackground(Color.black); contentPane.setLayout(new BorderLayout()); contentPane.add(canvas, BorderLayout.CENTER); frame = new JFrame("Capture"); frame.setIconImage(new ImageIcon(getClass().getResource("/icons/vlcj-logo.png")).getImage()); frame.setContentPane(contentPane); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocation(50, 50); frame.setSize(800, 600); factory = new MediaPlayerFactory(); mediaPlayer = factory.mediaPlayers().newEmbeddedMediaPlayer(); videoSurface = factory.videoSurfaces().newVideoSurface(canvas); mediaPlayer.videoSurface().set(videoSurface); }
public ScreenTestPlayer() { canvas = new Canvas(); canvas.setBackground(Color.black); canvas.setSize(550, 300); contentPane = new JPanel(); contentPane.setBackground(Color.black); contentPane.setLayout(new BorderLayout()); contentPane.add(canvas, BorderLayout.CENTER); frame = new JFrame("vlcj desktop capture"); frame.setIconImage(new ImageIcon(getClass().getResource("/icons/vlcj-logo.png")).getImage()); frame.setContentPane(contentPane); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); factory = new MediaPlayerFactory(); mediaPlayer = factory.mediaPlayers().newEmbeddedMediaPlayer(); videoSurface = factory.videoSurfaces().newVideoSurface(canvas); mediaPlayer.videoSurface().set(videoSurface); }
final EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.mediaPlayers().newEmbeddedMediaPlayer(); mediaPlayer.videoSurface().set(mediaPlayerFactory.videoSurfaces().newVideoSurface(c));
public static void main(String[] args) throws Exception { if(args.length != 1) { System.out.println("Specify a single MRL to stream"); System.exit(1); } String media = args[0]; String options = formatRtpStream("230.0.0.1", 5555); System.out.println("Streaming '" + media + "' to '" + options + "'"); MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory(args); EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.mediaPlayers().newEmbeddedMediaPlayer(); Canvas canvas = new Canvas(); canvas.setBackground(Color.black); VideoSurface videoSurface = mediaPlayerFactory.videoSurfaces().newVideoSurface(canvas); mediaPlayer.videoSurface().set(videoSurface); JFrame f = new JFrame("vlcj duplicate output test"); f.setIconImage(new ImageIcon(StreamRtpDuplicate.class.getResource("/icons/vlcj-logo.png")).getImage()); f.add(canvas); f.setSize(800, 600); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); mediaPlayer.media().play(media, options, ":no-sout-rtp-sap", ":no-sout-standard-sap", ":sout-all", ":sout-keep" ); // Don't exit Thread.currentThread().join(); }
final EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.mediaPlayers().newEmbeddedMediaPlayer(); mediaPlayer.fullScreen().strategy(new ExclusiveModeFullScreenStrategy(f)); mediaPlayer.videoSurface().set(mediaPlayerFactory.videoSurfaces().newVideoSurface(c));
mediaPlayer.videoSurface().set(mediaPlayerFactory.videoSurfaces().newVideoSurface(c));
mediaPlayer.videoSurface().set(videoSurface);
@Override public void run() { for(int i = 0; i < medias.length; i ++ ) { players.get(i).mediaPlayer().videoSurface().set(factory.videoSurfaces().newVideoSurface(players.get(i).videoSurface())); players.get(i).mediaPlayer().media().start(medias[i]); } // There is a race condition somewhere when invoking libvlc_media_player_play() // multiple times in quick succession that causes a hard-failure and a fatal // VM crash. // // This is _not_ about _concurrently_ calling play multiple times, but the // native play function call must be off-loading something to a separate // thread and returning - then a subsequent call to play somehow interferes // with that or fails because of that. // // When libvlc_media_player_play() is called, the video playback is kicked // off asynchronously - so the API call will return before the video has // started playing. If we invoke play and then wait (making this effectively // a synchronous call) for the player to start playing, there is less chance // for the hard VM crash to occur - but it still might for(int i = 0; i < medias.length; i ++ ) { EmbeddedMediaPlayer mediaPlayer = players.get(i).mediaPlayer(); mediaPlayer.controls().start(); } } });
mediaPlayer.videoSurface().set(factory.videoSurfaces().newVideoSurface(new TestBufferFormatCallback(), new TestRenderCallback(), true));
mediaPlayer.videoSurface().set(videoSurface);
mediaPlayer.videoSurface().set(factory.videoSurfaces().newVideoSurface(vs));
/** * Construct an embedded media player component. * <p> * Any constructor parameter may be <code>null</code>, in which case a reasonable default will be used. * * @param mediaPlayerFactory media player factory * @param videoSurfaceComponent heavyweight video surface component, will become part of this components UI layout * @param fullScreenStrategy full screen strategy * @param inputEvents keyboard/mouse input event configuration * @param overlay heavyweight overlay */ public EmbeddedMediaPlayerComponent(MediaPlayerFactory mediaPlayerFactory, Component videoSurfaceComponent, FullScreenStrategy fullScreenStrategy, InputEvents inputEvents, Window overlay) { this.ownFactory = mediaPlayerFactory == null; this.mediaPlayerFactory = initMediaPlayerFactory(mediaPlayerFactory); this.videoSurfaceComponent = initVideoSurfaceComponent(videoSurfaceComponent); this.mediaPlayer = this.mediaPlayerFactory.mediaPlayers().newEmbeddedMediaPlayer(); this.mediaPlayer.videoSurface().set(this.mediaPlayerFactory.videoSurfaces().newVideoSurface(this.videoSurfaceComponent)); this.mediaPlayer.fullScreen().strategy(fullScreenStrategy); this.mediaPlayer.overlay().set(overlay); this.mediaPlayer.events().addMediaPlayerEventListener(this); this.mediaPlayer.events().addMediaEventListener(this); setBackground(Color.black); setLayout(new BorderLayout()); add(this.videoSurfaceComponent, BorderLayout.CENTER); initInputEvents(inputEvents); onAfterConstruct(); }
this.mediaPlayer.events().addMediaEventListener(this); this.mediaPlayer.videoSurface().set(this.mediaPlayerFactory.videoSurfaces().newVideoSurface(bufferFormatCallback, renderCallback, lockBuffers));
mediaPlayer.videoSurface().set(factory.videoSurfaces().newVideoSurface(vs));