나는 오디오 데이터를 처리하는 응용 프로그램을 만들고 있습니다. 자바 (나는 MP3SPI, Jlayer 및 Tritonus를 추가했습니다)를 사용하고 있습니다. .wav 파일의 오디오 데이터를 바이트 배열로 추출합니다. 필자가 작업하고있는 오디오 데이터 샘플은 16 비트 스테레오입니다. 나는 하나 개의 샘플의 형식을 읽은에 따르면.WAV 오디오 데이터 샘플을 double 유형으로 변환하는 방법은 무엇입니까?
은 다음과 같습니다
AABBCCDD AABB 왼쪽 채널과 CCDD rigth 채널 (각 채널에 대한 2 바이트)를 나타냅니다
. 이 샘플을 double 값 형식으로 변환해야합니다. 데이터 형식에 대해 읽었습니다. Java는 Big endian을 사용하고 .wav 파일은 little endian을 사용합니다. 나는 조금 혼란 스럽다. 전환 과정을 도와 주시겠습니까? 감사합니다 모두
좋은 지적이지만 모든 byte [] 액세스에서이를 수행해야합니다 (24 비트 이상 왼쪽으로 이동하지 않는 한). 그것들은 int로 승격되므로 0x80은 0xffffff80이됩니다. – erickson
바로 그 것이고, 높은 바이트의 부호를 보존하고 싶습니다. 사실, 필자는 그것을 테스트하지 않았고 (특히 부동 소수점 값으로 작동하는지 모르겠다.) 서명 된 16 비트 값은 32 비트 이상으로 승격 될 때 부호를 잃어서는 안된다. –
안녕하세요, 귀하의 답변에 감사드립니다. @erickson; 나는 당신의 의견을 정말로 이해하지 못합니다. @GB; 이렇게하면 왼쪽 채널의 각 샘플에 대한 값을 왼쪽으로 가져오고 오른쪽 채널에 대한 값은 오른쪽으로 가져옵니다. 결국, 각 샘플에 대해 2 개의 값을 가질 수 있습니까? 각 표본에 대해 하나의 값만 얻을 수 있습니까? – dedalo