sunau
— Sun AU 파일 읽고 쓰기¶
소스 코드: Lib/sunau.py
sunau
모듈은 Sun AU 음향 형식에 편리한 인터페이스를 제공합니다. 이 모듈은 모듈 aifc
와 wave
모듈과 인터페이스 호환됩니다.
오디오 파일은 헤더와 뒤따르는 데이터로 구성됩니다. 헤더의 필드는 다음과 같습니다:
필드 |
내용 |
---|---|
매직 워드 |
4바이트 |
헤더 크기 |
info를 포함한 헤더의 크기 (바이트). |
데이터 크기 |
데이터의 물리적 크기 (바이트). |
인코딩(encoding) |
오디오 샘플이 인코딩되는 방법을 나타냅니다. |
샘플 속도(sample rate) |
샘플링 속도. |
채널 수 |
샘플의 채널 수. |
info(정보) |
오디오 파일에 대한 설명을 제공하는 ASCII 문자열 (널 바이트로 채워집니다). |
info 필드는 제외하고, 모든 헤더 필드의 크기는 4바이트입니다. 이것들은 모두 빅 엔디안 바이트 순서로 인코딩된 32비트 부호 없는 정수입니다.
sunau
모듈은 다음 함수를 정의합니다:
- sunau.open(file, mode)¶
file이 문자열이면, 그 이름으로 파일을 열고, 그렇지 않으면 위치 변경할 수 있는 파일류 객체로 처리합니다. mode는 다음 중 하나일 수 있습니다.
'r'
읽기 전용 모드.
'w'
쓰기 전용 모드.
읽기와 쓰기를 동시에 지원하지 않음에 유의하십시오.
'r'
의 mode는AU_read
객체를 반환하고,'w'
나'wb'
의 mode는AU_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.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.close()¶
nframes를 올바르게 만들고 파일을 닫습니다.
이 메서드는 삭제 시에 호출됩니다.
writeframes()
나 writeframesraw()
를 호출한 후 파라미터를 설정하는 것은 유효하지 않습니다.