我在播放在线 mp3 时遇到问题。我使用的是最新版本的 javazoom 的 jlayer 和 basicplayer。以下是例外情况:
原因:javazoom.jlgui.basicplayer.BasicPlayerException:java.io.EOFException 在 javazoom.jlgui.basicplayer.BasicPlayer.initAudioInputStream(未知来源) 在 javazoom.jlgui.basicplayer.BasicPlayer.open(未知来源) ... 还有 12 个 原因:java.io.EOFException 在 java.io.DataInputStream.readInt(DataInputStream.java:375) 在 com.sun.media.sound.WaveFileReader.getFMT(WaveFileReader.java:244) 在 com.sun.media.sound.WaveFileReader.getAudioFileFormat(WaveFileReader.java:85) 在 javax.sound.sampled.AudioSystem.getAudioFileFormat(AudioSystem.java:985) 在 javazoom.jlgui.basicplayer.BasicPlayer.initAudioInputStream(未知来源) ... 另外 15 个
我的java是1.6.0_16。
某些文件无法通过互联网播放。我有一组 mp3,一个接一个地播放。随机播放一个 mp3 不起作用并抛出上述异常。如果使用 javazoom 的基本播放器,某些 mp3 可以通过再次调用 play() 方法播放,但其他 mp3 永远无法在线播放。
我找到了这但我怀疑这是否真的与我的 directx 版本或其他东西有关。
穆罕森
答案1
如果您通过 HTTP 进行流式传输,Web 服务器似乎会立即关闭连接而不提供任何数据。一些通过 HTTP 提供 MP3 的服务器会评估请求标头,试图阻止工具抓取媒体流,并且仅在请求标头与已知媒体播放器匹配时才提供内容。如果您有网络嗅探工具并且知道与您尝试从中获取内容的服务器配合使用的媒体播放器,您当然可以在 Java 程序中设置 HTTP 请求标头,以便服务器认为您正在使用常规媒体播放器。
答案2
您能从该网址下载该文件吗?
EOF 是“文件结束”。它正在丢失流,或者只是没有文件可供获取。
答案3
当输入或输出流未得到正确管理时,我遇到过类似的问题...您是否将所有内容包装在 try/catch/finally 中并正确关闭所有流?
如果您运气好并且缓冲区获取了所有内容,则某些方法可能会有效。
您也可以尝试刷新(.flush())输入流。
希望这可以帮助。