vlcj 全屏视频播放器

Liv*_* As 2 java swing awt vlc vlcj

我使用vlc媒体播放器的vlcj库做了一个视频播放器。

这是我的代码来做到这一点..

public class Player {

    public static void main(final String[] args) {
        NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files\\VideoLAN\\VLC");
        Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);

        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Player(args);
            }
        });
    }

    private Player(String[] args) {
        JFrame frame = new JFrame("vlcj Tutorial");

        MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();

        Canvas c = new Canvas();
        c.setBackground(Color.black);
        JPanel p = new JPanel();
        p.setLayout(new BorderLayout());
        p.add(c, BorderLayout.CENTER);
        frame.add(p, BorderLayout.CENTER);


        EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer();
        mediaPlayer.setVideoSurface(mediaPlayerFactory.newVideoSurface(c));
        frame.setLocation(100, 100);
        frame.setSize(1050, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);


        mediaPlayer.playMedia("D:\\EmbeddedMediaPlayer\\test.3gp");
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以使用此代码播放视频,但是如何像 vlc 媒体播放器一样在全屏上看到相同的视频?

如何通过鼠标右键应用最大化(全屏)和最小化双击事件?

cap*_*ica 6

全屏在不同平台上可能会出现一些问题,因此全屏的实现留给您可以选择或自己实现的策略实现。

碰巧的是,Windows 是全屏问题最多的平台。

在 vlcj 3.0.0+ 中,有一个使用 Win32 本机 API 的新的全屏策略实现。这是在 Windows 上实现全屏的最可靠的方法,因此也是推荐的方法。

您在创建媒体播放器时选择策略实施:

EmbeddedMediaPlayer mediaPlayer = 
    mediaPlayerFactory.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(frame));
Run Code Online (Sandbox Code Playgroud)

稍后当您想要切换全屏时:

mediaPlayer.toggleFullScreen();
Run Code Online (Sandbox Code Playgroud)

或者:

mediaPlayer.setFullScreen(boolean fullScreen);
Run Code Online (Sandbox Code Playgroud)

如果您想听鼠标点击,那么原则上您所做的就是MouseListener像通常对对象所做的那样添加 a Canvas

然而,在 Windows 中,检测鼠标点击并不那么简单,您必须在创建媒体播放器时执行此操作:

mediaPlayer.setEnableMouseInputHandling(false);
mediaPlayer.setEnableKeyInputHandling(false);
Run Code Online (Sandbox Code Playgroud)

然后,在您的MouseListener实现中,您可以调用上述全屏方法之一。

另请注意,您必须防止您的mediaPlayer引用被垃圾收集。通常将其声明为类字段而不是堆变量就足够了(就像您在发布的代码中那样)。

您还应该在此处查看示例:

https://github.com/caprica/vlcj/blob/vlcj-3.0.1/src/test/java/uk/co/caprica/vlcj/test/fullscreen

https://github.com/caprica/vlcj/blob/vlcj-3.0.1/src/test/java/uk/co/caprica/vlcj/test/fullscreen/Win32FullScreenPlayerTest.java