可悲的是,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();
}
Run Code Online (Sandbox Code Playgroud)
但我的问题是我只有完整MP3文件的块,我需要在它们到达时播放它们.还有更好的选择吗?
编辑
发现了一个有趣的类似问题:MP3不会与JMF一起流式传输 :使用JLayer解码MP3文件
创建一个实现 InputStream 的类,并在块到达时接收它们,并将字节提供给播放器。只需确保在每个块请求字节时跟踪您在其中的位置,然后在烧毁该块后丢弃该块并开始提供下一个块的数据。
由于玩家期望处理输入流,因此不会更明智。您可能不需要将其包装在 BufferedInputStream 中,因为您将在类中处理它。
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |