一尘不染

如何使用JavaZOOM JLayer库播放/暂停mp3文件?

java

如何在以下代码中添加“播放/暂停”按钮?

import javazoom.jl.player.Player;

try{
    FileInputStream fis = new FileInputStream("mysong.mp3");
    Player playMP3 = new Player(fis);
    playMP3.play();
}
catch(Exception exc){
    exc.printStackTrace();
    System.out.println("Failed to play the file.");
}

阅读 738

收藏
2020-12-03

共1个答案

一尘不染

您需要使用AdvancedPlayer该类而不是just类Player,因为更简单的类不能真正开始在中间播放文件。

您需要添加一个PlaybackListener并监听该stop()方法。然后,您可以从停下来的那一刻起重新开始。

private int pausedOnFrame = 0;

AdvancedPlayer player = new AdvancedPlayer(fis);
player.setPlayBackListener(new PlaybackListener() {
    @Override
    public void playbackFinished(PlaybackEvent event) {
        pausedOnFrame = event.getFrame();
    }
});
player.play();
// or player.play(pausedOnFrame, Integer.MAX_VALUE);

这将记住播放的帧已暂停(如果已暂停)。

现在,在暂停后再次按Play键时,您将检查文件pausedOnFrame中的数字是否介于0和帧数之间,然后调用play(int begin, int end)

请注意,在执行此操作之前,您应该知道文件中的帧数。如果没有,您可以尝试通过以下技巧播放所有帧:

player.play(pausedOnFrame, Integer.MAX_VALUE);

话虽如此,该API似乎对您的情况不是很有帮助,但除了将其夹到其他库外,它是您可以做的最好的事情。

2020-12-03