我正在开发一个Swing无线电项目,用户在其中键入一个URL,我的Java程序将从给定的链接中获取实时音频并为用户实时播放 . 问题是用户可能输入可能没有格式化为.mp3 / .wav / .aiff文件的实时无线电URL,它可能只是一个通过在线媒体播放器播放时播放音频的网站链接,例如和BBC Radio One一样(http://www.bbc.co.uk/radio/player/bbc_radio_one) .

我尝试了Java Sound API,但它只支持定向到音乐文件的URL(例如foo.com/bar.wav/) . 声音API不支持http://www.bbc.co.uk/radio/player/bbc_radio_one等URL,因为它们不是音频文件 . 如果你要去BBC Radio One链接,你会发现它会自动开始播放现场音频 . 那个现场音频是我想在我的Java程序中播放的 .

在StackOverflow上,我找到了与我有类似问题的人,但他们使用的是.mp3 / .wav / .aiff / etc网址,这很好,但对我不起作用 .

我还在Program Creek上找到了一个页面,它显示了多种通过URL播放音频的方法 . 我试图在那里使用很多例子,但由于我的URL格式或Stream Errors,它们都不会起作用 . 例如,我稍微修改了其中一个方法(来自Program Creek上的示例4):

/**
 * Plays the audio file specified in the 'url' parameter.
 * @param url URL for Audio Loading
 */
public void play(final String url) {
    try {
        InputStream in = getClass().getResourceAsStream(url);
        InputStream buf = new BufferedInputStream(in);
        AudioInputStream ain = AudioSystem.getAudioInputStream(buf);
        AudioFormat format = ain.getFormat();
        DataLine.Info info = new DataLine.Info(Clip.class, format);
        Clip clip = (Clip) AudioSystem.getLine(info);
        clip.open(ain);
        clip.start();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

当我给BBC Radio One URL(http://www.bbc.co.uk/radio/player/bbc_radio_one)播放时,我会收到以下错误(here) .

有什么方法可以摆脱这个IOException错误,或使用非音频文件URL以不同的方式接收实时音频流?你能引导我走上正确的道路来解决这个问题吗?

谢谢 .