sunau — Чтение и запись файлов Sun AU¶
Исходный код: Lib/sunau.py
Модуль sunau предоставляет удобный интерфейс для звукового формата Sun AU.
Обратите внимание, что этот модуль совместим с aifc и wave
модулями.
Аудиофайл состоит из заголовка, за которым следуют данные. Поля заголовка:
| Поле | Содержание |
|---|---|
| magic word | Четыре байта .snd. |
| header size | Размер заголовка, включая информацию, в байтах. |
| data size | Физический размер данных, в байтах. |
| encoding | Указывает способ кодированный аудиоотсчетов. |
| sample rate | Частота выборки. |
| # of channels | Количество каналов в выборках. |
| info | ASCII строка с описанием аудиофайла (дополненного нулевыми байтами). |
Кроме поля информации, все поля заголовка имеют размер 4 байта. Все они представляют собой 32-битные беззнаковые целые числа, кодированный в обратном порядоке байт (обратный порядок байт).
Модуль sunau определяет следующие функции:
-
sunau.open(file, mode)¶ Если file является строкой, открыть файл с таким именем, в противном случае обработайте его как искомый файлообразный объект. mode может быть любой из них
'r'режим «только чтение».'w'режим только записи.Обратите внимание, что он не разрешает чтение и запись файлов.
mode
'r'возвращает объектAU_read, в то время как mode'w'или'wb'возвращает объектAU_write.
-
sunau.openfp(file, mode)¶ Синоним
open(), поддерживаемый для обратной совместимости.Deprecated since version 3.7, will be removed in version 3.9.
Модуль sunau определяет следующее исключение:
-
exception
sunau.Error¶ Ошибка возникает, когда что-то невозможно из-за specs 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¶
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() недопустима.
