私のプログラムの一部は、サウンドの読み込みとプロンプトが表示されたらそれらを再生する必要があります。 現在、プロジェクト内のリソースとして「埋め込まれた」.wavファイルの読み込みをサポートしています。これを行うには、私はこのようなコードの行を使用します。ファイルからロードされたJava AudioInputStreamをリセットする
sounds[i+1] = AudioSystem.getAudioInputStream(MyProject.class.getResource("filename.wav"));
私の次の目標は、ユーザーが再生するために、独自の.wavファイルをロードできるようにすることです。これを行うには、次のようなコードを使用します:
今すぐ問題が発生します。自然に私はこれらの音を複数回再生できるようにしたいと考えています。私の最初のアプローチでは、私は使用した:
sound.markSupported();
sound.mark(Integer.MAX_VALUE);
/* do stuff with it */
sound.reset();
これは完全に正常に働いた。しかし、私は(上記の2番目の方法で)ファイルを "定期的に"読み込むことで作成したオーディオストリームに対しては、動作しません(reset()の呼び出し時にクラッシュします)。
つまり、なぜ私が受けていますエラーが
java.io.IOException: mark/reset not supported
at java.io.InputStream.reset(InputStream.java:348)
at javax.sound.sampled.AudioInputStream.reset(AudioInputStream.java:427)....
のですか? これを修正するにはどうすればよいですか?
'mark()'を使用できない場合、 'sound.markSupported()'が 'true'を返すかどうかチェックする必要があります。 – mariusz2108