2014-06-19 5 views
2

에서 오디오 (.wav)을 파일을 재생하려고 클래스를 호출하고 거기에 play 함수를 호출하면 아무 소리도 들리지 않습니다. 나는 소리가 시작될 때 그리고 그것이 끝날 때 실제 파일이 아닌 팝을 듣는다. 또한 어떤 종류의 오류도 발생하지 않습니다.소리가 때 나는 다음과 같은 코드를 사용하여 사운드 파일을 재생할 수있는 매우 간단한 클래스가 자바

내가 뭘 잘못하고 있니? 미리 감사드립니다! 당신은 오디오 스트림을로드 한 후 AudioSystem.getClip()을 사용해야 할 수도 있습니다

File soundFile = new File("something.wav"); 
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(soundFile); 
clip = AudioSystem.getClip(); 
clip.open(audioInputStream); 
clip.start();//This plays the audio 

:

+0

파일 형식은 무엇입니까? 코덱을 사용합니까? – Mansueli

+0

아니요. 정상적인 .WAV 파일이고 다른 파일을 시도했습니다. – Ood

+0

클립이 완료 될 때까지 기다려야합니다. [이 질문] (https://stackoverflow.com/questions/557903/how-can-i-wait-for-a-java-sound-clip-to-finish - 재생 - 백) –

답변

0

같은 것을보십시오.

1

여기를 사용하십시오. 내 코드가 아닙니다. How to play .wav files with java 여기에 게시하여 조금 최적화했습니다.

private final int BUFFER_SIZE = 128000; 
private AudioInputStream audioStream; 
private SourceDataLine sourceLine; 
/** 
* @param filename the name of the file that is going to be played 
*/ 
public void playSound(String filename){ 
try { 
    audioStream = AudioSystem.getAudioInputStream(new File(filename)); 
} catch (Exception e){ 
    e.printStackTrace(); 
} 
try { 
    sourceLine = (SourceDataLine) AudioSystem.getLine(new DataLine.Info(SourceDataLine.class, audioStream.getFormat())); 
    sourceLine.open(audioStream.getFormat()); 
} catch (LineUnavailableException e) { 
    e.printStackTrace(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
sourceLine.start(); 
int nBytesRead = 0; 
byte[] abData = new byte[BUFFER_SIZE]; 
while (nBytesRead != -1) { 
    try { 
     nBytesRead = audioStream.read(abData, 0, abData.length); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    if (nBytesRead >= 0) { 
     @SuppressWarnings("unused") 
     int nBytesWritten = sourceLine.write(abData, 0, nBytesRead); 
    } 
} 
sourceLine.drain(); 
sourceLine.close(); 
} 

이 정보가 도움이되기를 바랍니다.

0

오디오 파일 하나가 자주 발생하는 것을 경험했습니다. 분명히 Java는 압축 된 사운드 파일이나 그와 비슷한 것을 재생할 수 없습니다. 선형 PCM 파일 만 재생합니다. 나는 유일한 것에 대해서 틀릴 수 있습니다. 누구나 모든 유형의 사운드 파일을 재생하는 예가 있습니까?