java - 将 URL 与 AudioInputStream 结合使用

标签 java url audio wav clip

            URL url = new URL("http://www.dasolorfire.freehostia.com/sound/test.wav");
            AudioInputStream sound = AudioSystem.getAudioInputStream(url); //Sound.java:50
            DataLine.Info info = new DataLine.Info(Clip.class, sound.getFormat());
            clip = (Clip) AudioSystem.getLine(info);
            clip.open(sound);
            clip.addLineListener(new LineListener()
            {
                public void update(LineEvent event)
                {
                    if (event.getType() == LineEvent.Type.STOP)
                    {
                        event.getLine().close();
                    }
                }
            });
            clip.start();

这是我尝试从网址加载音频。这不仅非常慢,而且当我尝试加载声音文件时,我得到了这个异常:

javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input URL
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at srcD.Sound.soundPlay(Sound.java:50)

我的下一次尝试是用输入流替换 url。

            InputStream url = new URL("http://www.dasolorfire.freehostia.com/sound/test.wav").openStream();
            AudioInputStream sound = AudioSystem.getAudioInputStream(url);

问题是我收到此错误:

java.io.IOException: mark/reset not supported
at java.io.InputStream.reset(Unknown Source)
at java.io.FilterInputStream.reset(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.reset(Unknown Source)
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(Unknown Source)
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at srcD.Sound.soundPlay(Sound.java:50)

(我正在尝试加载 jnlp 的声音)

最佳答案

就第二个错误而言,您可以通过将输入流包装在 BufferedInputStream 中来使其正常工作,如下所示:

        InputStream is = new URL("http://www.dasolorfire.freehostia.com/sound/test.wav").openStream();
        BufferedInputStream bis = new BufferedInputStream( is );
        AudioInputStream sound = AudioSystem.getAudioInputStream(bis);

关于java - 将 URL 与 AudioInputStream 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12917297/

相关文章:

java - 带有自定义 header 和参数的 RestTemplate GET 请求导致 400(空)

javascript - 为 Javascript 优化 Gruber URL 正则表达式

javascript - 在 HTML 中嵌入标记 - 我如何在 Javascript 中知道 .wav 文件已播放完毕?

java - 使用 $and 和 $in 从 mongodb 检索结果

Java在类之间传递值时编译错误

java - 发现不兼容的类型 java.lang : ArrayAdapter

javascript - GET 请求因 URL 中的 '?' 而中断

php - 如何安全地获取当前 PHP 页面父目录的完整 URL

audio - 使用Web音频自动进行两输入混音

java - 如何创建网络音频播放列表?