2009-10-02 14 views
6

크기가 약 100MB 인 매우 큰 WAV 파일이 있습니다. Java를 사용하여이 wav 파일을 읽고 오디오 2 초마다 작은 덩어리로 분할하고 싶습니다.Java를 사용하여 wav 파일을 작은 청크로 분할하는 방법은 무엇입니까?

Java에서이 작업을 수행 할 수 있습니까? 내가 얻을 수있는 API를 제안 해 주시겠습니까? 사전에

감사합니다, Snehal

+0

안녕하세요. 나는 .wav 파일을 읽고 있는데, 작은 덩어리로 나눠서 각 덩어리의 빈도를 알아 내고 싶다. 나는 Java Sound에서 아주 새롭다. 그래서 이것으로 나를 도울 수있다. 나는 다음 주석에 내 코드의 일부를 첨부하고있다. 미리 감사드립니다. – Learner

+0

final float [] floatBuffer = DTMF.generateDTMFTone (character); String read = "D : /RecordAudio31.wav"; InputStream 입력 = 새 FileInputStream (읽기); // 입력 스트림에서 audiostream 생성 AudioStream audioStream = new AudioStream (in); final AudioFormat 형식 = new AudioFormat (44100, 16, 1, true, false); final AudioInputStream inputStream = 새로운 오디오 입력 스트림 (audioStream, format, floatBuffer.length); final AudioDispatcher dispatcher = new AudioDispatcher (inputStream, stepSize, 0); dispatcher.addAudioProcessor (goertzelAudioProcessor); 새 스레드 (디스패처) .start(); – Learner

+0

나는 그것을 이해했다. 어쨌든 고마워. – Learner

답변

4

당신은 (형식, 샘플 속도)를 작성하는 것을 알고 AudioInputStream과 (AN AudioFormat 인스턴스를 포함)의 AudioFileFormat 멤버를 사용할 수 있습니다, 당신은 그것을 작성하는 AudioSystem를 사용할 수 있습니다.

형식의 샘플 속도에 따라 오디오의 바이트 수는 2 초이며 AudioInputStream에서 해당 바이트 수를 읽는 루프로 이동하여 새 파일에 기록합니다.

+0

AudioFileFormat을 통해 샘플 속도가 8000이라는 것을 알 수있었습니다. 샘플 속도와 차지하는 바이트 수 사이의 관계는 무엇입니까? 나는 오디오 처리에있어 전체 초보자이다. 내 무지를 유감이다. – Snehal

+2

샘플 속도 (f) 외에도 AudioFormat에서도 제공되는 샘플 당 비트 수 (bps)와 채널 수 (n)가 필요하다. 오디오 1 초 동안 bps * n * f/8 바이트가 필요합니다. – eljenso

+0

감사합니다 Elijenso. 나는 2 초의 오디오에 필요한 바이트 수를 알아낼 수 있었다. 이제 AudioSystem의 write 메서드를 사용하여 읽은 바이트를 쓰려고합니다. 다만, 입력 인수의 1 개는 AudioInputStream입니다. 읽은 바이트를 기반으로 해당 개체를 만들 수 없습니다. 모든 포인터가 정말 도움이 될 것입니다. 감사! – Snehal

0

코드의 수명을 신경 쓰지 않는다면 Java 용 Quicktime이 미디어에 좋은 선택입니다. Windows 및 Mac에서 실행되며 거의 모든 오디오 (및 비디오) 형식을 읽고 씁니다. 단점은 애플이 수년간 지원해 오지 않았기 때문에 여전히 효과가 있지만 죽어가는 기술에 투자하고 있다는 것이다.

1

specification for a wav file도 매우 간단하고 간단합니다. 그리고 이진 파일을 읽고 더 작은 비트로 다시 저장하십시오.

필자는 항상 라이브러리에 의존하는 대신이 방법을 사용하는 것이 더 나은 학습 경험이라고 생각합니다.

+1

더 큰 청크의 형식이 주어지면 작은 청크의 헤더를 포맷하는 방법도 알아야합니다. '단순한'과업이 아니라 지나치게 어려운 것도 아닙니다.확실히 사양을 조사해야합니다. –

관련 문제