2013-02-03 73 views
0

我想循環播放一個音頻文件,但是當我嘗試了其他各種可用的方法時,我的音樂無法播放。在java中使用.wav格式的循環音頻文件

我的基本代碼是:

import java.io.*; 
import sun.audio.*; 

public class PlayMusic { 


    public void playSound() { 
     try { 
      AudioPlayer p = AudioPlayer.player; 
      AudioStream as = new AudioStream(new FileInputStream("02 River Flows In You.wav")); 
      p.start(as); 


     } catch (IOException IOE) { 
     } 
    } 
+0

基本上你會錯過循環代碼。您的代碼只播放一個音頻文件。 – StarsSky

+0

我看到:)謝謝:) 嗯,如果我可能會問......我應該實現什麼樣的循環代碼? :) – user2037456

+0

因爲我試了幾次,失敗了。我可以遵循的任何建議代碼? :) – user2037456

回答

0

我從來沒有見過sun.audio.AudioPlayer在使用前!我一直使用javax.sound.sampled庫。

也許你可以告訴我你是如何遇到它的。它在我看來很像舊代碼(10年?),而且在有限的一面也有一些。

我想,如果你沒有得到一個單一的播放功能,你應該嘗試的URL形式:

  AudioStream audiostream = new AudioStream(url.openStream()); 
    AudioPlayer.player.start(audiostream);

然後嘗試將代碼在一個循環?很大程度上取決於.start命令是否阻止。如果它啓動一個單獨的線程(很可能),那麼你將不得不弄清楚文件何時結束,並且我沒有看到提供的任何命令來做到這一點!該規範還列出了創建ContinuousAudioDataStream並對其進行管理的可能性。

除非有什麼我不知道這個庫,我應該,我建議使用javax.sound.sampled.Clip或javax.sound.sampled.SourceDataLine播放。剪輯有一個布爾值,您可以設置循環,但需要先將整個文件加載到內存中。 SourceDataLine從url或文件位置播放,並可以實現一個監聽器來告訴你文件何時完成。

http://docs.oracle.com/javase/tutorial/sound/playing.html

相關問題