2D Java Platform 게임을 만드는 중이며 .wav 파일에서 재생할 오디오를 가져 오려고합니다. 게임이 실행되는 동안 ... 아래 java.io.IOException : mark/reset는 지원되지 않습니다. Java 오디오 입력 스트림/버퍼 된 입력 스트림
내가 오디오 입력 스트림 I 컴파일하고 소스 코드에서 직접 게임을 실행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();
}
}
에 자원을로드 돌봐 만든 AudioPlayer 클래스입니다 , 오디오 잘 작동하지만 .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 = new AudioPlayer ("/ resources/audio/bgmusic/bgmusic.wav"); – Steve