2013-03-06 1 views
1

오디오를 audiostream로 변환하려고 시도하고 자바를 사용하여 오디오로 다시 변환하려고합니다. 바이트 배열에 wav 파일을 읽을 때 약 30000 바이트를 표시하지만 새 파일에 쓸 때 단지 44 바이트를 씁니다. 어디가 잘못되었는지 말해주십시오. 다음과 같이 코드입니다 : N의자바의 오디오 파일에 완전한 audiostream을 쓸 수 없습니다

File src = new File("C:\\test.wav"); 
    AudioInputStream ais = AudioSystem.getAudioInputStream(src); 
    byte[] data = new byte[ais.available()]; 
    int x = ais.read(data); 

    int n = AudioSystem.write(ais, AudioFileFormat.Type.WAVE, new File("C:\\test2.wav")); 
    System.out.println("x="+x+" n="+n); 

출력은 내가 문제가 당신이 바이트 배열에 AudioInputStream를의 전체 내용을 읽을 것을 믿는다 (44)

답변

0

입니다. 즉, AudioInputStream 인스턴스를 AudioSystem.write() 메서드에 전달하면 이미 파일의 끝에 있습니다. (쓰고있는 44 바이트는 아마도 헤더 정보 일뿐입니다.)

빠른 진단 방법은 ais.read (data)에 대한 호출을 주석 처리하고 파일을 올바르게 쓰는 지 확인하는 것입니다.

가능한 해결 방법은 파일을 바이트 배열로 읽어 들인 후 AudioInputStream에서 mark() 및 reset() 메서드를 사용하여 파일의 처음으로 돌아가는 것입니다.

관련 문제