2011-03-29 69 views
0

我試圖創建一個小應用程序,只是從我的硬盤播放視頻。我已經嘗試了3天,但我不知道該怎麼做。網上沒有好的教程或示例,可以使用當前的javafx(jmc)發行版進行此操作。我想創建一個swing應用程序,即使用javafx中的jmc類。我試過這個:JMC/JavaFX - 播放視頻

... 
MediaProvider mp; 
String mediaURI = "G:\\teste2.avi"; 
JFrame jf = new JFrame(); 

JPanel j = new JPanel(); 
j.setLayout(new BorderLayout()); 

    mp = new MediaProvider(); 
    try { 
     mp.setSource(new URL("file://" + mediaURI).toURI()); 
    } catch (MalformedURLException ex) { 
     Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); 
    }catch (URISyntaxException ex2) { 
      Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex2); 
    } 

mp.setRepeating(false); 
j.setSize(800, 600); 
j.setVisible(true); 
jf.add(j); 
jf.setSize(800, 600); 
j.setBackground(Color.red); 
jf.setVisible(true); 
mp.play(); 
... 

但現在:如何將「mp」添加到我的jpanel? 「j.add(熔點);」不起作用(由於color.red,jpanel僅爲紅色,但未顯示視頻)。有沒有簡單的方法來做到這一點?謝謝。

我也試過用第二類:

public class Player implements VideoRendererListener{ 

private MediaProvider prov; //This is the most important class! 

private VideoRenderControl renderer; //It's a interface to control the rendering 

private Graphics2D ig; 

private JPanel panel; 


public void Player(File path, JPanel panel) { 
    ig = (Graphics2D) panel.getGraphics(); 
    this.panel = panel; 
    prov = new MediaProvider(path.toURI()); 
    renderer = prov.getControl(VideoRenderControl.class); 
    renderer.addVideoRendererListener(this); 
    prov.play(); 
    System.out.println(prov.getDuration()); 

} 

@Override 
public void videoFrameUpdated(VideoRendererEvent arg0) { 
     float ratio = renderer.getFrameHeight()/(float)renderer.getFrameWidth(); 

     int diff = (panel.getHeight() - Math.round(ratio * panel.getHeight()))/2; 

     System.out.println(renderer.getFrameHeight()); 


     /* renderer.paintVideo(ig, 
       new Rectangle(0, 0, renderer.getFrameWidth(), renderer.getFrameHeight()) 
       , 
       new Rectangle(0, diff, panel.getWidth(), Math.round(ratio * panel.getHeight()))); 
*/ 
} 

} 

並將其加入到我的主類的JPanel:

Player p = new Player(); 
p.Player(f,j); 

但 「renderer.paintVideo()」 方法ISN」 t可用:(所以這也不工作(也許與舊版本的jmc,因爲我發現在互聯網上作爲例子)

有誰知道,如何添加一個本地視頻到一個鞦韆應用程序當前發佈的javafx,jmc?

回答