在 java 中播放聲音(2)

聲音是一個遊戲至關重要的部分。

上一次我談了利用AudioClip 簡單兩行代碼來播放聲音(http://blog.csdn.net/cnmm22/article/details/44674173)。今天我介紹一下另一種方法,利用AudioStream。

使用這兩個方法過程中定位一個資源的過程要難於使用方法本身。

上一次我們給 AudioClip 傳進一個 URL 從而定位一個資源,這一次,我們延續這個思路,完善一下怎樣在java中定位一個資源文件。

這一次。我換一種寫法:

String path = new File(getClass().getClassLoader().getResource(“”).toURI()).getPath();
FileInputStream fileau = new FileInputStream(path + “\sounds\1\1.mp3”);

這次我們沒有傳 URL,但首先同樣利用反射機制,getClass().getClassLoader().getResource.toURI()).getPath(),拿到項目 bin 文件夾在電腦裏的絕對位置,因爲是反射,所以在文件被移動後仍然能找到資源。 之後的 path + “\sounds\1\1.mp3” 是文件本身的urI,其中sounds/1 文件夾爲示範,代表在bin 下滴任意路徑。注意其中反斜槓由雙反斜槓代替。

我們把這個path (String name),傳給 FileInputStream,從而得到我們要播放 AudioStream 的資源文件。

接下來是播放代碼:

AudioStream as = new AudioStream(fileau);
AudioPlayer.player.start(as);

假設我們這次還是用 URL來定位一個資源文件,參考代碼爲:

URL u = XXX.class.getClassLoader().getResource(“sounds/1/diao.wma”);
as = new AudioStream(u.openStream());
AudioPlayer.player.start(as);

如果我們需要重複播放一首音樂,需要這樣寫:

AudioData data = as.getData();
ContinuousAudioDataStream gg = new ContinuousAudioDataStream(data);
AudioPlayer.player.start(gg);

最後別忘:as.close();當然還有 try catch .

最後我需要說明。 java 我這次提到的兩中聲音播放的方法,對所有音頻文件的支持並不是很理想,有很多格式,比如 mp3是無法播放滴,文件一般情況下都需要轉換成 wav,在這之後因爲轉碼的問題,甚至不一定所有的 wav 都能播放,這樣會使文件過大,而且目前在jdk1.8 我還沒找到很好的暫停,繼續播放音樂的方法。所以我希望本文能夠多給與 java裏通過反射定位一個資源文件滴一些參考。

發佈了53 篇原創文章 · 獲贊 15 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章