Java 将URL与AudioInputStream一起使用
这是我从url加载音频的尝试。这不仅非常慢,而且当我尝试加载声音文件时,会出现以下异常: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 = 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);