无法循环MP3文件

时间:2013-12-16 23:31:03

标签: java

好的,所以我正在尝试在应用程序打开时永久循环声音文件。这是我运行声音文件的代码片段。

public class Game {

    public static void main(String[] args) {

        JFrame window = new JFrame("Josh's 2D College Project");
        window.setContentPane(new GamePanel());
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setResizable(false);
        window.pack();
        window.setVisible(true);

        try{

            File file = new File("C:/Users/Josh Scott (Zinotia)/Desktop/2D College Project/Resources/Sounds/BGSong.mp3");
            FileInputStream fis = new FileInputStream(file);
            BufferedInputStream bis = new BufferedInputStream(fis);

            try{

                Player player = new Player(bis);
                player.play();

            } catch(JavaLayerException ex) {}

        } catch(IOException e){} 
    }
}

我正在使用JavaZoom的JavaLayer来播放Mp3文件。任何人都可以给我另一种方式来循环和放大以不同的方式使用声音文件或使用JavaLayer

2 个答案:

答案 0 :(得分:2)

向播放器添加监听器;

如果您使用的是 AdvancedPlayer 而不是播放器,则可以这样做。

AdvancedPlayer p = new AdvancedPlayer(bis)
p.setPlayBackListener(new Playbacklistener(){

    //override unimplemented methods
    @Override
    public void playbackFinished(PlaybackEvent evt){
        p.start()
    }

    @Override
    public void playbackStarted(PlaybackEvent evt){}
};

注意 - 这只是片段,您需要将其集成到您的代码中......

答案 1 :(得分:1)

首先,确定mp3文件的确切时间。然后在第二个try语句中添加一个while(true)并在其中添加

player.play();

然后添加此

thread.Sleep(//mp3 length in milliseconds here)

它应该是这样的:

try {
     Player player = new Player(bis);
     while(true) {
        player.play();
        Thread.Sleep(69000); //length of mp3 here
     }
}

您也可以尝试

try {
     Player player = new Player(bis);
     while(true) {
        player.play();
     }
}

但我不确定这是否会起作用或者只是一遍又一遍地继续播放声音。