Javazoom BasicPlayer:寻求输入流

时间:2011-09-16 10:36:53

标签: java mp3 inputstream jlayer

我正在开发一种从互联网传输音乐的程序。当我播放一首歌时,我无法访问它的URL。我只获得一个输入流和一些信息,如字节长度等等。我想实现一个类似于youtube等的搜索栏。直到现在我已经设法将搜索栏显示为JSlider,最大值是以字节为单位的流的长度,并且值根据歌曲中的当前位置(以字节为单位)而变化

现在,BasicPlayer有一个名为seek(long bytesToSkip)的函数,我尝试调用它,当滑块被用户输入移动和释放时。但是seek()不会做任何事情。没有日志消息,没有。所以我下载了BasicPlayer的源代码并发现,seek(long bytesToSkip)调用skipBytes(long bytesToSkip)来检查要播放的数据是否是文件。如果不是,它什么都不做。

所以我删除了if子句,看看它会带我去哪里。现在我在

行获得了一个例外
initAudioInputStream();

这将检查它正在处​​理的数据类型,并为该类型的数据调用适当的方法。在我的情况下

initAudioInputStream(InputStream inputStream) {
    m_audioInputStream = AudioSystem.getAudioInputStream(inputStream);
    m_audioFileFormat = AudioSystem.getAudioFileFormat(inputStream);
}

并且在这两行的第一行中我得到了我的例外。这是一个EOFException,所以我认为流没有“缓冲”到足以获得audioInputStream。如果那个方法需要整个文件,我想我运气不好。

我真的希望有人能帮助我完成这项工作。我一直在研究这个问题......

0 个答案:

没有答案