. Я нахожусь в создании 2D-платформы Java Platform. Я пытаюсь получить аудио для воспроизведения из файла .wav. в то время как игра работает ...java.io.IOException: отметка/сброс не поддерживается. Входной поток аудиовидеопотока. Буферный входной поток.
Ниже приводится AudioPlayer класс я создал, чтобы заботиться о загрузке ресурса в аудиовхода поток
import javax.sound.sampled.*;
import java.io.*;
import java.util.*;
import java.net.*;
public class AudioPlayer {
private Clip clip;
public AudioPlayer(String s) {
try {
/************/
InputStream is = getClass().getResourceAsStream(s);
AudioInputStream ais;
BufferedInputStream bis = new BufferedInputStream(is);
ais = AudioSystem.getAudioInputStream(bis);
/************/
AudioFormat baseFormat = ais.getFormat();
AudioFormat decodeFormat = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
baseFormat.getSampleRate(),
16,
baseFormat.getChannels(),
baseFormat.getChannels() * 2,
baseFormat.getSampleRate(),
false);
AudioInputStream dais = AudioSystem.getAudioInputStream(decodeFormat, ais);
clip = AudioSystem.getClip();
clip.open(dais);
}
catch(Exception e) {
e.printStackTrace();
}
}
public void play() {
if(clip == null) return;
stop();
clip.setFramePosition(0);
clip.start();
}
public void stop() {
if(clip.isRunning()) clip.stop();
}
public void toggle() {
if(clip.isRunning()) {
clip.stop();
}
else {
clip.start();
}
}
public void close() {
stop();
clip.close();
}
}
Когда я скомпилировать и запустить игру непосредственно из исходного кода , звук работает нормально, но когда я пытаюсь сжать файлы в формате .jar и запустить файл .jar, я получаю ошибку:
java.io.IOException: mark/reset not supported
at java.util.zip.InflaterInputStream.reset(Unknown Source)
at java.io.FilterInputStream.reset(Unknown Source)
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(Unknown Source)
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at audio.AudioPlayer.<init><AudioPlayer.java:18)
...
Я не уверен, правильно ли настроил буферный поток ввода для игры в формате .jar.
Любые мысли о том, как решить эту проблему, будут высоко оценены.
Спасибо!
Этот файл вы пытаетесь воспроизвести в файле jar? – Nishan
Да. WAV-файл находится внутри пакета ресурсов в .jar. String s представляет локальный путь к файлу .jar. Я бы создал объект Audio Player следующим образом: bgMusic = новый AudioPlayer («/ resources/audio/bgmusic/bgmusic.wav»); – Steve