솔브레드자바 클립 (소리가납니다) 효과적으로 재생되지 않습니다.
Runnable에 문제가있어서 실제로 두 개의 게임 스레드가 동시에 실행되고있었습니다. (문제는 같았습니다!) 따라서 오디오 플레이어에 부딪힌 두 번째 스레드가 오류를 일으켰습니다. 왜 그것이 에코로 들렸는지, 그것은 두 개의 다른 스레드에서 재생 중이었습니다!
긴 사운드 클립을 사용하기 위해 제안 된대로 SourceDataLine도 사용하고 있습니다.
이 코드 화재는 오류가 clip.open()
라인에서
IllegalStateException: Mixer is already open
말 팝업
원래 포스트. 코드가 두 번 실행되는지 확인하기 위해 모든 방법을 사용했습니다. 그러나 오류가 있더라도 사운드는 계속 재생됩니다. 긴 클립 (30 초)에서는 다른 2 개의 사운드가 재생되는 것처럼 들립니다. 정말로 긴 클립 (3 분)에서는 소리가 더듬입니다.
은 (stringFile
는 "example.wav"
같은 String
입니다)이 질문은 이미 게시 된 경우
File soundFile = new File(stringFile);
AudioInputStream inputStream = AudioSystem.getAudioInputStream(soundFile);
AudioFormat format = inputStream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
clip = (Clip) AudioSystem.getLine(info);
clip.open(inputStream);
clip.start();
playing = true;
, 정말 죄송합니다. 검색 한 결과이 스레드와 비슷한 스레드가 발견되지 않았습니다.
[BigClip] (http://stackoverflow.com/questions/5667454/playing-audio-file-in-java-application/5668510#5668510)을 사용하면 더 많은 행운을 누릴 수 있습니다. BTW - 어떤 OS 및 Java를 실행하고 있습니까? 비 Sun * nix JRE는 임의로 크기가 지정된 'Clip' 인스턴스를 허용했지만 (구현은 일반적으로 버그가 있음) Sun/Oracle의'Clip '은로드 할 수있는 사운드의 길이가 매우 제한되어 있습니다. –
감사합니다. 리눅스 민트, 그리고 openjdk 또는 태양 자바를 사용하여, 이클립스가 무엇을 사용하고 있는지 확실하지 않습니다. P ill try BigClip. – khyperia