vlcj播放视频时黑屏

vlcj black screen when playing video

我在嵌套 JPanel 播放视频时遇到了一些麻烦。我有一个 AVPlayer class extend JPanel 可以同时播放最多 4 个视频。每个视频都在其自己的 canvas 内播放,该 canvas 位于其自己的 JPanel 内。然后将所有面板放入 AVPlayer 面板。但是当我尝试播放视频时,我得到的只是一个黑色方块。

我不确定我更大的程序中的实际问题是什么,但我想如果我可以使用下面的第二段代码播放视频,我想我可以解决它。谁能告诉我为什么第一段代码能够正确显示所有视频,而第二段代码却不能。

有效代码:

    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 500);
    frame.setVisible(true);

    AVPlayer player = new AVPlayer();   
    frame.getContentPane().add(player);
    frame.revalidate();
    String[] path = {"(ei)ga_00.mp4", "ei-utsu(ru)_00.mp4", "video.mp4"};
    player.playVideo(path);

显示一个黑色小方块的代码

JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 500);
    frame.setVisible(true);

    AVPlayer player = new AVPlayer();

    JPanel panel = new JPanel();        
    panel.add(player);

    frame.getContentPane().add(panel);
    frame.revalidate();
    String[] path = {"(ei)ga_00.mp4", "ei-utsu(ru)_00.mp4", "video.mp4"};
    player.playVideo(path);

JPanel panel = new JPanel();改为JPanel panel = new JPanel(new BorderLayout());

你的 AVPlayer 也应该覆盖 JPanelgetPreferredSize 方法和 return 组件的 "preferred size" 方法,这样布局管理器有一些希望真的能在那里工作

有关详细信息,请参阅 Laying Out Components Within a Container

请注意,vlcj 的主要视频表面是重量级组件,将它们混合在重量级容器上可能会产生一些不良影响