使用 Java 以块形式播放 MP3



遗憾的是Java中缺乏MP3支持。我正在开发一个需要接收 MP3 块并播放它们的应用程序。我像这样使用Jlayer MP3库:

import javazoom.jl.player.Player;
public class MP3 {
    private String filename;
    private Player player; 
    // constructor that takes the name of an MP3 file
    public MP3(String filename) {
        this.filename = filename;
    }
    public void close() { if (player != null) player.close(); }
    // play the MP3 file to the sound card
    public void play() {
        try {
            FileInputStream fis     = new FileInputStream(filename);
            BufferedInputStream bis = new BufferedInputStream(fis);
            player = new Player(bis);
        }
        catch (Exception e) {
            System.out.println("Problem playing file " + filename);
            System.out.println(e);
        }
        player.play();
}

但我的问题是我只有完整 MP3 文件的块,我需要在它们到达时播放它们。有没有更好的选择?

编辑

发现了一个有趣的类似问题:MP3 不会使用 JMF 流式传输另外:使用 JLayer 解码 MP3 文件

创建一个实现 InputStream 的类,并在块到达时接收它们,但将字节提供给播放器。只需确保在每个块请求字节时跟踪您在每个块中的位置,然后在烧录该块并开始从下一个块提供数据时丢弃该块。

由于玩家希望处理输入流,因此不会更明智。您可能不需要将其包装在 BufferedInputStream 中,因为您将在类中处理它。

相关内容

  • 没有找到相关文章

最新更新