sunau
— Чтение и запись Sun AU файлов
Модуль sunau
предоставляет удобный интерфейс для звукового формата Sun
AU. Обратите внимание, что данный модуль совместим по интерфейсу с модулями
aifc
и wave
.
Аудиофайл состоит из заголовка, за которым следуют данные. Поля заголовка:
Поле | Содержание |
---|---|
magic word | Четыре байта .snd . |
header size | Размер заголовка, включая информацию, в байтах. |
data size | Физический размер данных, в байтах. |
encoding | Указывает способ кодированный аудиоотсчетов. |
sample rate | Частота выборки. |
# of channels | Количество каналов в выборках. |
info | ASCII строка с описанием аудиофайла (дополненного нулевыми байтами). |
За исключением информационного поля, у всех полей заголовка размер 4 байта. Все представляют собой 32-битные целые числа без знака, закодированные в обратном порядке байт (big-endian).
Модуль sunau
определяет следующие функции:
-
sunau.
open
(file, mode) Если file является строкой, открывает файл по этому имени, в противном случае обрабатывает его как файлоподобный объект с возможностью поиска. mode может быть любым из:
'r'
- Режим только для чтения.
'w'
- Только режим записи.
Обратите внимание, что он не позволяет читать/записывать файлы.
mode
'r'
возвращает объектAU_read
, а mode'w'
или'wb'
возвращает объектAU_write
.
-
sunau.
openfp
(file, mode) Синоним для
open()
, поддерживаемый для обратной совместимости.Устарело с версии 3.7, будет удалено в 3.9 версии..
Модуль 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
Дополнительные известные значения поля encoding из заголовка AU, но которые не поддерживаются данным модулем.
Объекты AU_read
Объекты AU_read, возвращенные open()
, содержат следующие методы:
-
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
() Возвращает
namedtuple()
(nchannels, sampwidth, framerate, nframes, comptype, compname)
, эквивалентный выходным данным методовget*()
.
-
AU_read.
readframes
(n) Считывает и возвращает не более n фреймов аудио в виде объекта
bytes
. Данные будут возвращены в линейном формате. Если исходные данные в формате u-LAW, они будут преобразованы.
-
AU_read.
rewind
() Перематывает указатель файла на начало аудиопотока.
Следующие два метода определяют термин «позиция», который совместим между ними и в остальном зависит от реализации.
-
AU_read.
setpos
(pos) Устанавливает указатель файла в указанную позицию. Только значения, возвращенные из
tell()
, должны использоваться для pos.
-
AU_read.
tell
() Возвращает текущую позицию указателя файла. Обратите внимание, что возвращаемое значение не имеет ничего общего с фактической позицией в файле.
Следующие две функции определены для совместимости с aifc
и не делают
ничего интересного.
-
AU_read.
getmarkers
() Возвращает
None
.
-
AU_read.
getmark
(id) Вызывает ошибку.
Объекты AU_write
Объекты AU_write, возвращенные open()
, содержат следующие методы:
-
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()
.