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
也应该覆盖 JPanel
的 getPreferredSize
方法和 return 组件的 "preferred size" 方法,这样布局管理器有一些希望真的能在那里工作
有关详细信息,请参阅 Laying Out Components Within a Container
请注意,vlcj 的主要视频表面是重量级组件,将它们混合在重量级容器上可能会产生一些不良影响
我在嵌套 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
也应该覆盖 JPanel
的 getPreferredSize
方法和 return 组件的 "preferred size" 方法,这样布局管理器有一些希望真的能在那里工作
有关详细信息,请参阅 Laying Out Components Within a Container
请注意,vlcj 的主要视频表面是重量级组件,将它们混合在重量级容器上可能会产生一些不良影响