使用JavaZOOM BasicPlayer类播放某些MP3时出错

时间:2012-04-06 16:14:52

标签: java swing mp3 ioexception javasound

这是堆栈跟踪:

java.io.IOException: Resetting to invalid mark
    at java.io.BufferedInputStream.reset(BufferedInputStream.java:433)
    at org.tritonus.share.sampled.file.TAudioFileReader.getAudioInputStream(TAudioFileReader.java:324)
    at javazoom.spi.mpeg.sampled.file.MpegAudioFileReader.getAudioInputStream(Unknown Source)
    at javazoom.spi.mpeg.sampled.file.MpegAudioFileReader.getAudioInputStream(Unknown Source)
    at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1179)
    at javazoom.jlgui.basicplayer.BasicPlayer.initAudioInputStream(Unknown Source)
    at javazoom.jlgui.basicplayer.BasicPlayer.initAudioInputStream(Unknown Source)
    at javazoom.jlgui.basicplayer.BasicPlayer.open(Unknown Source)
    at BasicPlayerDemo.play(BasicPlayerDemo.java:49)
    at BasicPlayerDemo.main(BasicPlayerDemo.java:24)

似乎其他人也遇到了这个问题:

有什么理由吗?我正在尝试使用JavaZoom类创建一个简单的Java Swing音乐播放器。

2 个答案:

答案 0 :(得分:5)

pelzkuh.de blog)有一个解决这个问题的方法它是德语的,但主要是说原因是一个过时的库mp3spi1.9.4.jar。你必须用新的mp3spi1.9.5.jar替换它。 pelzkuh博客文章中提供了链接。

答案 1 :(得分:3)

带有答案的帖子暗示了我之前曾经发生过的事情。

  1. MP3几乎不是任何“标准” - 对基本格式有很多扩展。基于Java Sound的应用程序。通常只会处理其中的一些类型,即使情况并非如此
  2. 媒体播放器通常会付出相当大的努力来播放“任何垃圾文件”(包括无效文件)。复制这种能力将是一项重大努力。
  3.   

    对此没有简单的解决方案吗?我应该忽略这样的MP3吗?

    1. 听起来很简单(简单)。跳过它们&去下一首曲目。如果用户在播放器选项中选择“高反馈”,则弹出一个对话框或将其添加到日志中。
    2.   

      实际上我正在为我的大学制作一个迷你项目,所以如果这个玩家不播放某些文件就不好看了。

      我会跟人们一起检查一下。如果他们期望你在大学项目中为“任何文件投掷”提供支持,他们就需要从云中脱颖而出。我敢打赌,我可以制作在一个'主要玩家'上播放的文件,但会导致下一个锁定和播放死(好吧......想想最近的一些视频尝试,但同样的基本原则适用)。 “处理媒体”非常棘手。

        

      ..学院并没有期待什么,因为我选择自己创造这个。我不知道处理媒体很棘手。现在,如果他们问,我可以告诉他们!

      我建议为播放器提供播放列表和由您控制的媒体(并确保与您的播放器兼容)。您可以在media page找到3个基本的,可分发的MP3曲目。那些是:

        

      (可解析)JMF MP3编解码器

      ..所以JavaZoom也应该能够加载它们。