2013-10-23 204 views
2

我正在開發我認爲應該用javafx-媒體播放器來播放本地硬盤上存儲的mp3文件的簡單任務,在用戶默認音樂文件夾路徑中(使用fedora)。我可以從命令行播放所有的mp3文件,但是當我嘗試通過javafx.scene.media庫播放時,javafx會一直告訴我mp3是一種upsupported媒體類型。我已經下載了我能找到的每個圖書館,但都無濟於事。這是一個實際上試圖打開該文件並播放媒體代碼:無法通過javafx 2.2媒體播放器播放mp3文件

第一次嘗試:

public void playTrack(String audioFileName) { 
    System.out.println("going to play the file "+audioFileName); 
    String filename = System.getProperty("user.home")+"/"+audioFileName; 
    File audioFile = new File(filename); 
    Media audioFileStream= null; 
    try { 
     audioFileStream = new Media(audioFile.toURI().toURL().toString()); 
    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    MediaPlayer mediaPlayer = new MediaPlayer(audioFileStream); 
    mediaPlayer.play(); 
} 

方法2:

public void playTrack(String audioFileName) { 
    System.out.println("going to play the file "+audioFileName); 
    String source = new File(System.getProperty("user.home")+"/"+audioFileName).toURI().toString(); 
    //String source = new File("07-Basket-Case.mp3").toURI().toString(); 
    System.out.println("going to play "+source); 
    Media media = null; 
    media = new Media(source); 
    MediaPlayer mediaPlayer = new MediaPlayer(media); 
    mediaPlayer.play(); 
} 

兩個生產完全相同的錯誤結果,顯示這裏:

要播放文件:/home/cpeddie/workspace/parnassusfx/07-Basket-Case.mp3 線程中的異常「JavaFX Application Thread」MediaException: MEDIA_UNSUPPORTED:com.sun.media.jfxmedia.MediaException:「不支持的錯誤媒體音頻格式」:com.sun.media.jfxmedia.MediaException:「錯誤的媒體音頻格式不受支持」 at javafx.scene.media.MediaException.exceptionToMediaException(MediaException (MediaPlayer.java:383) at com.promptu.parnassusfx.sample。 music.MusicController.playTrack(MusicController.java:218) at com.promptu.parnassusfx.sample.music.MusicController $ 3 $ 1 $ 1.handle(MusicController.java:357) at com.promptu.parnassusfx.sample.music.MusicController $ 3 $ 1 $ 1.handle(MusicController.java:1) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170) at com.sun.javafx.event。 CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38) 在com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37) 在com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 在com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 在com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 在com.sun.javafx.event。 BasicEventDispatcher.dispatchEvent(BasicEventDispatcher。的java:35) 在com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 在com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 在的com.sun。 javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 在com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 在com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl。的java:92) 在com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 在com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 在的com.sun。 javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 在com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 在com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 在com.sun.javafx.event。 EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) at com.sun。javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil。 java:53) at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:28) at javafx.event.Event.fireEvent(Event.java:171) at javafx.scene.Node.fireEvent( Node.java:6867) at javafx.scene.control.Button.fire(Button.java:179) at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:193) at com.sun.javafx.scene.control.skin.SkinBase $ 4.handle(SkinBase.java:336) at com.sun.javafx.scene.control.skin.SkinBase $ 4.handle(SkinBase.java:329) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:64) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217) at com.sun.javafx.event。 EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170) 在com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38) 在com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37) 在com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 在com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 在com.sun.javafx.event。 EventDispatchChainImpl.dispatchEvent(EventDispatchChainI mpl.java:92) 在com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 在com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 在融爲一體。 sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 在com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 在com.sun.javafx.event.BasicEventDispatcher.dispatchEvent( BasicEventDispatcher.java:35) 在com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 在com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 在COM。 sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java :92) 在com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 在com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 在com.sun.javafx .event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 在com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 在com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java :35) 在com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 在com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 在com.sun.javafx .event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53) at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33) at javafx.event.Event.fireEvent( Event.java:171) at javafx.scene.Scene $ MouseHandler.process(Scene.java:3311) at javafx.scene.Scene $ MouseHandler.process(Scene.java:3151) at javafx.scene.Scene $ MouseHandler.access $ 1900(Scene.java:3106) at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1563) at javafx.scene.Scene $ ScenePeerListener.mouseEvent(Scene.java:2248) at com.sun .javafx.tk.quantum.GlassViewEventHandler $ MouseEventNotification.run(GlassViewEventHandler.java:250) at com.sun.javafx.tk.quantum。GlassViewEventHandler $ MouseEventNotification.run(GlassViewEventHandler.java:173) 在java.security.AccessController.doPrivileged(本機方法) 在com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:292) 在COM .sun.glass.ui.View.handleMouseEvent(View.java:530) at com.sun.glass.ui.View.notifyMouse(View.java:924) at com.sun.glass.ui.gtk.GtkApplication ._runLoop(Native Method) at com.sun.glass.ui.gtk.GtkApplication $ 3 $ 1.run(GtkApplication.java:89) at java.lang.Thread.run(Thread.java:724) 引起: com.sun.media.jfxmedia.MediaException:「錯誤媒體音頻格式不受支持」 at com.sun.media.jfxmediaimpl.MediaUtils.nativeError(MediaUtils.java:331) at com.sun.media.jfxmediaimpl.platform.gstreamer.GSTMedia.init(GSTMedia.java:50) at com.sun.media.jfxmediaimpl.platform.gstreamer.GSTMedia。(GSTMedia.java:33) at com .sun.media.jfxmediaimpl.platform.gstreamer.GSTMediaPlayer。(GSTMediaPlayer.java:39) at com.sun.media.jfxmediaimpl.platform.gstreamer.GSTPlatform.prerollMediaPlayer(GSTPlatform.java:100) at com.sun。 media.jfxmediaimpl.platform.PlatformManager.createMediaPlayer(PlatformManager.java:173) at com.sun.media.jfxmediaimpl.NativeMediaManager.getPlayer(NativeMediaManager.java:260) at com.sun.media.jfxmedia.MediaManager.getPlayer( MediaManager.java:139) at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:431) ... 75更多

我還應該提到,我正在開發使用運行在OS 10.8.5的MacBook Pro上的VMWare融合。運行Fedora 19.

任何幫助將被appreaciated!

回答

3

花費了大約一天半的時間來弄明白,但要安裝以下軟件包需要:

狄拉克庫 - 1.0.2-9.fc18.i686.rpm

libavcodec52-0.7 .15-32.fc18.i686.rpm

libavformat52-0.7.15-32.fc18.i686.rpm

libavutil50-0.7.15-32.fc18.i686.rpm

libxavs1- 0.1.51-2.fc18.i686.rpm

安裝這些之後,javafx會像魅力一樣播放音樂。

+0

我可以從哪裏安裝這些軟件包?我花了一個星期仍無法找到解決方案... ... - – taymedee