Ein Teil meines Programms erfordert das Laden von Sounds und die Wiedergabe von Sounds, wenn Sie dazu aufgefordert werden. Momentan unterstütze ich das Laden von .wav-Dateien, die ich als Ressourcen in meinem Projekt "eingebettet" habe. Um dies zu tun verwende ich eine Zeile Code wie folgt aus:Zurücksetzen von Java AudioInputStream geladen aus Datei
sounds[i+1] = AudioSystem.getAudioInputStream(MyProject.class.getResource("filename.wav"));
Mein nächstes Ziel ist es dem Benutzer zu ermöglichen, ihre eigenen WAV-Dateien für die Wiedergabe zu laden. Um dies zu tun, verwende ich eine Zeile Code wie folgt:
sounds[i+1] = AudioSystem.getAudioInputStream(new File("filename.wav"));
Jetzt kommt das Problem. Natürlich möchte ich diese Sounds mehr als einmal spielen können. In meinem ersten Ansatz habe ich verwendet:
sound.markSupported();
sound.mark(Integer.MAX_VALUE);
/* do stuff with it */
sound.reset();
Und das funktionierte einwandfrei. Es funktioniert jedoch nicht (stürzt beim Aufruf von reset() ab) für Audio-Streams, die ich beim Laden von Dateien "regelmäßig" erstelle (die zweite Methode oben).
Der Fehler Ich erhalte ist
java.io.IOException: mark/reset not supported
at java.io.InputStream.reset(InputStream.java:348)
at javax.sound.sampled.AudioInputStream.reset(AudioInputStream.java:427)....
Warum ist das so? Wie soll ich das beheben?
Sie müssen überprüfen, ob 'sound.markSupported()' '' 'zurückgibt, wenn nicht' '' '' '' – mariusz2108