sunau — Чтение и запись файлов Sun AU¶
Исходный код: Lib/sunau.py
Утратил актуальность с версии 3.11, будет удален в версии 3.13: Модуль sunau устарел (подробнее см. PEP 594).
Модуль sunau предоставляет удобный интерфейс для звукового формата Sun AU. Обратите внимание, что этот модуль совместим по интерфейсу с модулями aifc и wave.
Аудиофайл состоит из заголовка, за которым следуют данные. Поля заголовка являются:
Поле |
Содержание |
|---|---|
волшебное слово |
Четыре байта |
размер заголовка |
Размер заголовка, включая информацию, в байтах. |
размер данных |
Физический размер данных в байтах. |
кодирование |
Указывает, как кодируются аудиосэмплы. |
частота дискретизации |
Частота дискретизации. |
# of channels |
Количество каналов в выборках. |
информация |
Строка ASCII, дающая описание аудиофайла (дополненное нулевыми байтами). |
За исключением поля info, все поля заголовка имеют размер 4 байта. Все они представляют собой 32-разрядные целые числа без знака, закодированные в порядке байтов по старшинству.
Модуль sunau определяет следующие функции:
- sunau.open(file, mode)¶
Если file является строкой, откройте файл с таким именем, в противном случае рассматривайте его как файлоподобный объект, доступный для поиска. mode может быть любым из
'r'Режим только для чтения.
'w'Режим только для записи.
Обратите внимание, что он не разрешает чтение/ запись файлов.
Режим для
'r'возвращает объектAU_read, в то время как режим для'w'или'wb'возвращает объект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¶
Значения поля encoding из заголовка 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. Данные будут возвращены в линейном формате. Если исходные данные в формате uLAW, они будут преобразованы.
- AU_read.rewind()¶
Перемотайте указатель файла на начало аудиопотока.
Следующие два метода определяют термин «позиция», который совместим между собой и в остальном зависит от реализации.
- AU_read.setpos(pos)¶
Установите указатель файла в указанное положение. Для pos следует использовать только значения, возвращаемые из
tell().
- 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)¶
Кортеж должен быть
(nchannels, sampwidth, framerate, nframes, comptype, compname)со значениями, допустимыми для методовset*(). Задайте все параметры.
- AU_write.tell()¶
Возвращает текущую позицию в файле с той же оговоркой для методов
AU_read.tell()иAU_read.setpos().
- AU_write.writeframesraw(data)¶
Записывайте аудиокадры, не исправляя nframes.
Изменено в версии 3.4: Теперь принимается любое значение bytes-like object.
- AU_write.writeframes(data)¶
Запишите аудиокадры и убедитесь, что значение nframes указано правильно.
Изменено в версии 3.4: Теперь принимается любое значение bytes-like object.
- AU_write.close()¶
Убедитесь, что параметр nframes указан правильно, и закройте файл.
Этот метод вызывается при удалении.
Обратите внимание, что после вызова writeframes() или writeframesraw() задавать какие-либо параметры недопустимо.