2016-08-17 86 views
-1

我試圖發揮利用MediaPlayer的音頻文件,但它不工作,並顯示音頻文件沒有在java中打

Exception in thread "main" java.lang.IllegalArgumentException: uri.getScheme() == null! uri == 'audio.mp3' 

誰能幫我解決這個問題?

這裏是我的代碼:

package playaudio; 

import javafx.scene.media.Media; 
import javafx.scene.media.MediaPlayer; 

public class PlayAudio { 

    public static void main(String[] args) { 

     String fileName = "audio.mp3"; 
     Media playFile = new Media(fileName); 
     MediaPlayer mediaPlayer = new MediaPlayer(playFile); 
     mediaPlayer.play(); 
    } 

} 

編輯:當我嘗試將文件名轉換成URI它顯示了以下異常。

Exception in thread "Thread-0" java.lang.IllegalStateException: Toolkit not initialized 

代碼:

package playaudio; 

import javafx.scene.media.Media; 
import javafx.scene.media.MediaPlayer; 

public class PlayAudio { 

    public static void main(String[] args) { 

     String fileName = "audio.mp3"; 
     Media playFile = new Media(Paths.get(fileName).toUri().toString()); 
     MediaPlayer mediaPlayer = new MediaPlayer(playFile); 
     mediaPlayer.play(); 
    } 

} 
+2

[「java.lang.IllegalArgumentException:uri.getScheme()== null!」使用JavaFX播放音頻時出現錯誤](http://stackoverflow.com/questions/26028044/java-lang-illegalargumentexception- uri-getscheme-null-error-using-jav) –

+0

這並不能解決我的問題。我嘗試過,但顯示異常。 :/ –

回答

0

Media的構造函數實際上需要一個URI,這意味着你必須將文件名轉換成URI,試試這個:

Media media = new Media(Paths.get(fileName).toUri().toString());

+0

我試過,但仍然顯示 - 線程「Thread-0」中的異常java.lang.IllegalStateException:工具包未初始化 –

+1

[檢查此帖](http://stackoverflow.com/questions/26896798/javafx -media玩家 - 不工作) –

1

你可以試試這個。

InputStream in = new FileInputStream("audio.wav"); 
    AudioStream as = new AudioStream(in);  
    AudioPlayer.player.start(as); 

但是,這隻適用於.wav文件。