1
,如果我直接使用vlcj显示全屏那么它是好的,但是当我最初设定一个固定的大小,后来在飞行中把它设置为全屏那么它losts它的渲染, 代码:VLCJ未能切换全屏
panel_canvas=new JPanel(new BorderLayout());
panel_canvas.add(windowsCanvas,BorderLayout.CENTER);
mediaPlayerFactory = new MediaPlayerFactory("--no-video-title-show");
mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer();
mediaPlayer.setVideoSurface(mediaPlayerFactory.newVideoSurface(windowsCanvas));
frame.setContentPane(panel_canvas);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setSize(600,500);
frame.setVisible(true);
但如果我使用过程中,当按下 “Enter” 这将是全屏那么它失败
frame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released ENTER"), "RELEASED_ENTER");
frame.getRootPane().getActionMap().put("RELEASED_ENTER", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
if(!frame.isUndecorated()){
pres_size=frame.getSize();
prev_location=frame.getLocation();
frame.dispose();
frame.setUndecorated(true);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
}
谢谢@ee for reply.i由于vlcj的“视频表面”而面临全屏问题,如果是的话,我的代码适用于vlcj :),如果是的话,我可以获得如何在vlcj的视频表面上实现画布的代码:) – 2012-08-08 09:49:17
我使用VLCJ的DirectMediaPlayer类调用VLCJ的RenderCallbackAdapter.onDisplay()方法,该方法允许VLC视频缓冲区通过Swing中的Graphics.drawImage()方法被绘制为BufferedImage实例帧的'paintComponent()'方法(VLC 1.2.0,libVLC 1.1.11)。这可以在VLCJ的示例源库或其教程站点中作为示例代码提供。 – 2012-08-09 00:04:40
再次感谢,试图应用它,我会给你的反馈,如果我成功了@ee – 2012-08-10 17:13:28