来自网页的实时音频流

时间:2017-07-22 20:45:06

标签: java swing audio stream audio-streaming

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

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

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

我还在Program Creek上找到了一个页面,其中显示了多种通过网址播放音频的方法。我曾试图在那里使用许多示例,但由于我的URL格式或流错误,它们都不会起作用。例如,我稍微修改了其中一个方法(来自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网址(here)时,我会收到以下错误(http://www.bbc.co.uk/radio/player/bbc_radio_one)。

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

感谢。

0 个答案:

没有答案