Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将URL与AudioInputStream一起使用_Java_Url_Audio_Wav_Clip - Fatal编程技术网

Java 将URL与AudioInputStream一起使用

Java 将URL与AudioInputStream一起使用,java,url,audio,wav,clip,Java,Url,Audio,Wav,Clip,这是我从url加载音频的尝试。这不仅非常慢,而且当我尝试加载声音文件时,会出现以下异常: URL url = new URL("http://www.dasolorfire.freehostia.com/sound/test.wav"); AudioInputStream sound = AudioSystem.getAudioInputStream(url); //Sound.java:50 DataLine.Info i

这是我从url加载音频的尝试。这不仅非常慢,而且当我尝试加载声音文件时,会出现以下异常:

            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();
我的下一个尝试是用输入流替换url

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)
问题是我遇到了以下错误:

            InputStream url = new URL("http://www.dasolorfire.freehostia.com/sound/test.wav").openStream();
            AudioInputStream sound = AudioSystem.getAudioInputStream(url);
(我正在尝试为jnlp加载声音)

第一个错误(无法从输入URL获取音频输入流)表明您引用的音频数据格式不受支持。我不知道您的示例代码是否使用了真实的URL,但如果我尝试调用,我将被重定向到并获得一个HTML页面,而不是预期的WAV文件


第二个错误(不支持标记/重置)应该是不言自明的。的API文档解释了为什么提供的InputStream必须支持标记和重置功能(这些功能对于特定的InputStream实现是可选的)

至于第二个错误,您可以通过将输入流包装到BufferedInputStream中来实现这一点,如下所示:

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)

我刚意识到第一个错误。我不知道为什么。在控制面板中,文件工作正常。在网站上,该文件不起作用。其他wav文件也可以工作。谢谢你的回答!主要错误是声音文件在网站上不起作用,我通过将声音文件放入jar来修复它。我还有一个问题,当从互联网上运行时,这两个工作文件需要很长时间才能加载。如何加快速度?我遇到了以下错误mate:UnsupportDaudioFileException:无法从输入流获取音频输入流确保,该URL中不再有文件。
        InputStream is = new URL("http://www.dasolorfire.freehostia.com/sound/test.wav").openStream();
        BufferedInputStream bis = new BufferedInputStream( is );
        AudioInputStream sound = AudioSystem.getAudioInputStream(bis);