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