2012-11-13 40 views
1

你好我試圖用jmf創建一個簡單的視頻播放器。我認爲我的代碼可以,但是當我執行它時,我得到一個NoPlayerException。這裏是玩家的代碼:與jmf應用程序的NoPlayerException運行時錯誤

package reproductor; 
import java.awt.BorderLayout; 
import java.awt.Component; 
import java.io.IOException; 
import java.net.URL; 
import javax.media.CannotRealizeException; 
import javax.media.Manager; 
import javax.media.NoPlayerException; 
import javax.media.Player; 
import javax.swing.JPanel; 

/** 
* 
* @author pollyox16 
*/ 
public class repropanel extends JPanel{ 

    public repropanel(URL url){ 

    setLayout(new BorderLayout()); 


    Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, true); 

    try{ 
    createRealizedPlayer(). 


    Component video= reproductor.getVisualComponent(); 
    Component controles=reproductor.getControlPanelComponent(); 


    if(video!=null){ 

    add(video,BorderLayout.CENTER); 
    } 


    if (controles!=null){add(controles,BorderLayout.SOUTH);} 

    reproductor.start();//con esto arrancamos el reproductor. 
    } //end try 


    catch(NoPlayerException e3){ 
    System.out.println("player not created"); 

    } 
    catch (CannotRealizeException e){ 
    System.out.println("player not realized"); 

    } 

    catch (IOException e2){ 
    System.out.println("io exception catch"); 

    } 


    } 




} 

這裏它僅創建一個JFileChooser和URL添加到播放器的主要應用程序的代碼:這裏是主應用程序的代碼:

package reproductor; 
import java.net.URL; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
/** 
* 
* @author pollyox16 
*/ 
public class Reproductor{ 


    public static void main(String[] args) { 


     JFileChooser selectarchivo= new JFileChooser(); 
     int resultado= selectarchivo.showOpenDialog(null); 



     if(resultado== JFileChooser.APPROVE_OPTION){ 


     URL miurl=null; 
     try{ 



     miurl=selectarchivo.getSelectedFile().toURI().toURL(); 

     }//FINAL TRY 

     catch(Exception e){ 
      System.out.println("error en el main");  
     } 


     if(miurl!=null){ 
     JFrame ventana= new JFrame("pollyox16"); 
     ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     ventana.setSize(300,300); 
     repropanel mireproductor= new repropanel(miurl); 
     ventana.add(mireproductor); 
     ventana.setVisible(true); 
     } 
     } 
    } 
} 

編輯:這裏是異常堆棧跟蹤:

javax.media.NoPlayerException: Cannot find a Player for :file:/C:/Users/Public/Videos/Sample%20Videos/Wildlife.wmv 
    at javax.media.Manager.createPlayerForContent(Manager.java:1412) 
    at javax.media.Manager.createPlayer(Manager.java:417) 
    at javax.media.Manager.createPlayer(Manager.java:332) 
    at javax.media.Manager.createRealizedPlayer(Manager.java:527) 
    at reproductor.repropanel.<init>(repropanel.java:34) 
    at reproductor.Reproductor.main(Reproductor.java:52) 
+0

請在發生異常時發佈堆棧跟蹤 – Robin

+0

我剛添加了e3.stackTrace()。謝謝,請幫助我發現錯誤。 –

回答

4
javax.media.NoPlayerException: Cannot find a Player for: 
    file:/C:/Users/Public/Videos/Sample%20Videos/Wildlife.wmv 

WMV是不是列在JMF 2.1.1 - Supported Formats的任何地方。任何媒體的「快速和骯髒」測試是將其加載到JMF默認播放器中。如果該玩家不會加載它,任何其他基於JMF的應用程序也不會。

我有一個網頁提供了一些您可能選擇測試您的應用的JMF compatible media。用。


JMF很舊,對新格式的支持很少。如果您可以將視頻轉換爲JMF可以讀取的格式,則可以播放它,但在這個時候它不適合成爲通用的「媒體播放器」。

+0

謝謝我只是將它用於學習目的。 +1 :)。你還會推薦什麼API來播放不那麼古老的媒體。謝謝。 –

+0

我聽說Java FX對媒體有好處。對於第三方API,請參閱Xuggle或Jffmpeg。 –