sunau --- Sun AU 파일 읽고 쓰기

소스 코드: Lib/sunau.py


sunau 모듈은 Sun AU 음향 형식에 편리한 인터페이스를 제공합니다. 이 모듈은 모듈 aifcwave 모듈과 인터페이스 호환됩니다.

오디오 파일은 헤더와 뒤따르는 데이터로 구성됩니다. 헤더의 필드는 다음과 같습니다:

필드

내용

매직 워드

4바이트 .snd.

헤더 크기

info를 포함한 헤더의 크기 (바이트).

데이터 크기

데이터의 물리적 크기 (바이트).

인코딩(encoding)

오디오 샘플이 인코딩되는 방법을 나타냅니다.

샘플 속도(sample rate)

샘플링 속도.

채널 수

샘플의 채널 수.

info(정보)

오디오 파일에 대한 설명을 제공하는 ASCII 문자열 (널 바이트로 채워집니다).

info 필드는 제외하고, 모든 헤더 필드의 크기는 4바이트입니다. 이것들은 모두 빅 엔디안 바이트 순서로 인코딩된 32비트 부호 없는 정수입니다.

sunau 모듈은 다음 함수를 정의합니다:

sunau.open(file, mode)

file이 문자열이면, 그 이름으로 파일을 열고, 그렇지 않으면 위치 변경할 수 있는 파일류 객체로 처리합니다. mode는 다음 중 하나일 수 있습니다.

'r'

읽기 전용 모드.

'w'

쓰기 전용 모드.

읽기와 쓰기를 동시에 지원하지 않음에 유의하십시오.

'r'modeAU_read 객체를 반환하고, 'w''wb'modeAU_write 객체를 반환합니다.

sunau 모듈은 다음 예외를 정의합니다:

exception sunau.Error

Sun AU 명세나 구현 결함으로 인해 무언가가 불가능할 때 발생하는 에러.

sunau 모듈은 다음 데이터 항목을 정의합니다:

sunau.AUDIO_FILE_MAGIC

유효한 모든 Sun AU 파일이 시작하는 빅 엔디안 형식으로 저장된 정수. 이것은 정수로 해석되는 문자열 .snd입니다.

sunau.AUDIO_FILE_ENCODING_MULAW_8
sunau.AUDIO_FILE_ENCODING_LINEAR_8
sunau.AUDIO_FILE_ENCODING_LINEAR_16
sunau.AUDIO_FILE_ENCODING_LINEAR_24
sunau.AUDIO_FILE_ENCODING_LINEAR_32
sunau.AUDIO_FILE_ENCODING_ALAW_8

이 모듈이 지원하는, AU 헤더의 인코딩 필드 값.

sunau.AUDIO_FILE_ENCODING_FLOAT
sunau.AUDIO_FILE_ENCODING_DOUBLE
sunau.AUDIO_FILE_ENCODING_ADPCM_G721
sunau.AUDIO_FILE_ENCODING_ADPCM_G722
sunau.AUDIO_FILE_ENCODING_ADPCM_G723_3
sunau.AUDIO_FILE_ENCODING_ADPCM_G723_5

추가로 알려진 AU 헤더의 인코딩 필드 값이지만, 이 모듈에서 지원하지 않는 값.

AU_read 객체

위의 open()에 의해 반환된 AU_read 객체는 다음과 같은 메서드를 가지고 있습니다:

AU_read.close()

스트림을 닫고, 인스턴스를 사용할 수 없게 합니다. (삭제 시 자동으로 호출됩니다.)

AU_read.getnchannels()

오디오 채널 수를 반환합니다 (모노는 1, 스테레오는 2).

AU_read.getsampwidth()

샘플 폭을 바이트 단위로 반환합니다.

AU_read.getframerate()

샘플링 빈도를 반환합니다.

AU_read.getnframes()

오디오 프레임의 수를 반환합니다.

AU_read.getcomptype()

압축 유형을 반환합니다. 지원되는 압축 유형은 'ULAW', 'ALAW''NONE'입니다.

AU_read.getcompname()

getcomptype()의 사람이 읽을 수 있는 버전. 지원되는 유형은 각각 'CCITT G.711 u-law', 'CCITT G.711 A-law''not compressed' 이름입니다.

AU_read.getparams()

get*() 메서드의 결과와 동등한, namedtuple() (nchannels, sampwidth, framerate, nframes, comptype, compname)를 반환합니다.

AU_read.readframes(n)

최대 n 프레임의 오디오를 bytes 객체로 읽고 반환합니다. 데이터는 선형 형식(linear format)으로 반환됩니다. 원본 데이터가 u-LAW 형식이면, 변환됩니다.

AU_read.rewind()

파일 포인터를 오디오 스트림의 시작 부분으로 되감습니다.

다음의 두 메서드는 이들 사이에서 호환 가능한 용어 "위치(position)"를 정의하며, 그 외에는 구현에 따라 다릅니다.

AU_read.setpos(pos)

파일 포인터를 지정된 위치로 설정합니다. tell()에서 반환된 값만 pos에 사용해야 합니다.

AU_read.tell()

현재 파일 포인터 위치를 반환합니다. 반환된 값은 파일에서의 실제 위치와 아무런 관련이 없음에 유의하십시오.

다음 두 함수는 aifc와의 호환성을 위해 정의되었으며, 흥미로운 작업을 수행하지 않습니다.

AU_read.getmarkers()

None을 반환합니다.

AU_read.getmark(id)

에러를 발생시킵니다.

AU_write 객체

위의 open()에서 반환된 AU_write 객체에는 다음과 같은 메서드가 있습니다:

AU_write.setnchannels(n)

채널 수를 설정합니다.

AU_write.setsampwidth(n)

샘플 폭을 설정합니다 (바이트 단위).

버전 3.4에서 변경: 24비트 샘플에 대한 지원이 추가되었습니다.

AU_write.setframerate(n)

프레임 속도를 설정합니다.

AU_write.setnframes(n)

프레임 수를 설정합니다. 더 많은 프레임이 기록되면 나중에 변경될 수 있습니다.

AU_write.setcomptype(type, name)

압축 유형과 설명을 설정합니다. 출력에는 'NONE''ULAW' 만 지원됩니다.

AU_write.setparams(tuple)

tuple(nchannels, sampwidth, framerate, nframes, comptype, compname)이어야 하며, set*() 메서드에 유효한 값이어야 합니다. 모든 파라미터를 설정합니다.

AU_write.tell()

파일의 현재 위치를 반환하는데, AU_read.tell()AU_read.setpos() 메서드와 같은 면책 조항이 적용됩니다.

AU_write.writeframesraw(data)

nframes를 수정하지 않고 오디오 프레임을 씁니다.

버전 3.4에서 변경: 이제 모든 바이트열류 객체가 허락됩니다.

AU_write.writeframes(data)

오디오 프레임을 쓰고 nframes를 올바르게 만듭니다.

버전 3.4에서 변경: 이제 모든 바이트열류 객체가 허락됩니다.

AU_write.close()

nframes를 올바르게 만들고 파일을 닫습니다.

이 메서드는 삭제 시에 호출됩니다.

writeframes()writeframesraw()를 호출한 후 파라미터를 설정하는 것은 유효하지 않습니다.