2013-09-25 2 views
0

Java에서 오디오 파일 (특히 wav 파일)에서 오디오 스트림을 가져 오는 방법이 있습니까?오디오 파일에서 바이트 스트림을 가져 옵니까?

startTime에서 endTime까지 startTime이 0이 아닌 특정 간격의 스트림을 가져 오려고합니다. 예를 들어 오디오 스트림을 20 초 길이 오디오 파일의 5 초에서 10 초 (5 초 지속 시간)로 가져 오는 것입니다.

어떻게 수행하나요?

답변

2

을 당신은 표준 자바 사운드 라이브러리를 사용하여이 작업을 수행 할 수 있습니다 javax.sound.sampled의.

여기에서 .wav 파일을 읽는 방법과 바이트를 해당 프레임으로 변환하는 방법에 대해서도 다뤘습니다. 오른쪽에있는 "관련"을 확인하면 오디오 데이터를 읽는 방법, 한 번에 하나의 버퍼의 가치 및 해당 버퍼를 반복하고 바이트를 PCM 데이터로 변환하는 방법에 대한 정보를 찾을 수 있습니다.

프레임 속도 (예 : 44100fps)를 알고 있다고 가정하면 오디오 데이터의 바이트 또는 프레임 수를 계산할 문제가됩니다. 예를 들어 스테레오에서 44100fps의 16 비트 인코딩에서 각 프레임은 4 바이트로 구성되므로 바이트 (5 * 4 * 44100)는 5 초 지점의 시작이되고 (10 * 4 * 44100)은 10 초 지점.

자바 사운드 튜토리얼은 읽기가 어렵습니다. 다음 링크는 "사운드 파일 읽기"헤더 아래에 매우 유용한 코드 예제가 있습니다. http://docs.oracle.com/javase/tutorial/sound/converters.html

"... audioBytes 배열에 현재의 오디오 데이터를 유용한 일을 할, 여기 //" 를 읽고 주석 행있다 당신의 바이트를 계산하고, 조립 것이 어디

바이트로부터의 PCM 데이터.

관련 문제