2
            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)

私の次の試みは、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 のサウンドを読み込もうとしています)

4

2 に答える 2

2

2 番目のエラーに関する限り、次のように入力ストリームを BufferedInputStream にラップすることで、これを機能させることができる場合があります。

        InputStream is = new URL("http://www.dasolorfire.freehostia.com/sound/test.wav").openStream();
        BufferedInputStream bis = new BufferedInputStream( is );
        AudioInputStream sound = AudioSystem.getAudioInputStream(bis);
于 2012-10-17T14:47:16.613 に答える
1

最初のエラー (入力 URL から音声入力ストリームを取得できませんでした) は、参照している音声データの形式がサポートされていないことを示しています。サンプル コードが実際の URL を使用しているかどうかはわかりませんが、 http://www.dasolorfire.freehostia.com/sound/test.wav を呼び出そうとするとhttp://www.freehostiaにリダイレクトされます。 com/を開き、予想される WAV ファイルではなく、HTML ページを取得します。

2 番目のエラー (サポートされていないマーク/リセット) は自明です。AudioSystem.getAudioInputStream(InputStream)の API ドキュメントでは、提供された InputStream がマークおよびリセット機能をサポートしなければならない理由が説明されています (これらの機能は、特定の InputStream 実装ではオプションです)。

于 2012-10-16T16:31:14.997 に答える