2

这是堆栈跟踪:

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 音乐播放器。

4

2 回答 2

5

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

于 2012-10-09T18:44:56.577 回答
3

带有答案的线索暗示了我以前曾遇到过的事情。

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

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

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

实际上我正在为我的大学制作一个迷你项目,所以如果这个播放器不播放某些文件,它看起来并不好。

我会与标记它的人一起检查。如果他们希望您在大学项目中为“扔给它的任何文件”提供支持,他们需要把头从云中拉出来。我敢打赌,我可以制作在一个“主要播放器”上播放的文件,但会导致下一个锁定并死掉(好吧..考虑更多最近的一些视频尝试,但同样的基本原则适用)。“处理媒体”很棘手

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

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

(可解析)JMF MP3 编解码器

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

于 2012-04-06T17:47:53.437 回答