2011-09-09 4 views
2

내가 (드럼 시퀀서에서 사용) JAVA의 오디오 가져 오기 작업을 내가 가져 AIFF 파일과 함께 다음과 같은 문제가 있습니다AIFF 오디오 파일의 엔디안을 결정하는 것이 가능합니까?

내가, 하나의 동일한 유형 (24 비트, 44100kHz, 모노)의 2 개 AIFF 파일이를 Mac에서 생성되고 다른 하나는 Windows 컴퓨터에서 wavelab로 생성됩니다. 두 파일 모두 압축되지 않은 PCM이며 둘 다 FORM == AIFF입니다.

Mac의 AIFF는 BigEndian이며, Wavelab (Windows)의 AIFF는 LittleEndian입니다.

두 파일 모두 Wavelab (Windows) 및 Quicktime (Windows)에서 제대로 재생할 수 있습니다. 이 도구는 어떻게 이러한 파일의 엔디안을 감지 할 수 있습니까? 어떤 방법 으로든 가능해야합니다. 그렇지 않으면 적어도 하나의 파일이 잡음처럼 소리가납니다 (내 응용 프로그램에서 발생하는 것입니다).

파일 헤더 내에 숨겨진 정보가 있습니까, 아니면 AIFF 파일의 엔디안을 결정하는 다른 방법이 있습니까? 제안 사항이 있으십니까?

고마워 빠른 인터넷 검색 말한다

답변

3

는, AIFF 파일은 big endian이다.

그러나 Wikipedia에 따르면 데이터를 압축하는 AIFF-C라는 다른 형식이 있습니다. 애플은 거의 엔디안을 사용하지 않고 sowt이라는 가짜 압축 방법을 만들었습니다.이 방법은 본질적으로 "압축은 아니지만 리틀 엔디안"을 의미합니다. 그 점을 확인해야 할 수도 있습니다.

이외에도 일반 AIFF는 엔디안을 확인할 방법이 없습니다. 리틀 엔디안으로 인코딩 된 표준 AIFF는 사양을 위반 한 것 같습니다.

+0

예, AIFF는 빅 엔디안입니다. 그러나 wavelab은 리틀 엔디안에서 24 비트 aiff를 만듭니다. 이것이 사실입니다. 이것은 24 비트 aiffs에만 발생합니다. 다른 모든 비트 전송률은 wavelab을 사용하는 빅 엔디안으로 올바르게 생성됩니다. 나는 이상하게 들릴지도 모른다. 하지만이 파일은 실제로 little endian입니다. – gal

+0

@gal : 알겠습니다. 나는 대답을 업데이트했다. – musiKk

+0

예, 동의합니다. 파일이 스펙을 위반하거나 헤더를 읽는 중에 뭔가 잘못하고 있습니다 (필자는 16 비트 aiff와 똑같은 방식으로 읽었으며 모든 것이 제대로 작동합니다). 나는 가짜 압축 'sowt'에 대해 읽었지 만 파일은 그 유형이 아닙니다. 헤더는 AIFF가 아닌 AIFF 형식입니다. 그냥 궁금해, 어떻게 두 파일을 제대로 퀵타임에서 재생할 수 – gal