Содержание страницы
sunau – чтение и запись файлов Sun AU¶sunau – Read and write Sun AU files
Исходный код: Lib/sunau.py
Устарело с версии 3.11, будет удалено в версии 3.13: Модуль sunau устарел
(см. PEP 594 для подробностей).
Модуль sunau предоставляет удобный интерфейс для звукового формата Sun AU.
Обратите внимание, что этот модуль совместим по интерфейсу с модулями aifc и wave.
Аудиофайл состоит из заголовка, за которым следуют данные. Поля заголовка:
Поле |
Содержание |
|---|---|
магическое слово |
Четыре байта |
размер заголовка |
Размер заголовка в байтах, включая поле info. |
размер данных |
Физический размер данных в байтах. |
кодировка |
Указывает, как закодированы аудиосэмплы. |
частота дискретизации |
Частота дискретизации. |
количество каналов |
Количество каналов в сэмплах. |
info |
Строка ASCII с описанием аудиофайла (дополненная нулевыми байтами). |
За исключением поля info, все поля заголовка имеют размер 4 байта. Все они являются 32-разрядными целыми числами без знака, закодированными в порядке байтов от старшего к младшему (big-endian).
Модуль sunau определяет следующие функции:
- sunau.open(file, mode)¶
Если file – строка, открывается файл с этим именем; в противном случае он рассматривается как файлоподобный объект с произвольным доступом. mode может быть одним из следующих значений:
'r'Режим только для чтения.
'w'Режим только для записи.
Обратите внимание: этот режим не поддерживает файлы, открытые одновременно на чтение и запись.
Режим mode
'r'возвращает объектAU_read, а режим mode'w'или'wb'возвращает объектAU_write.
Модуль sunau определяет следующее исключение:
- exception sunau.Error¶
Исключение, возникающее, когда что-то невозможно из-за спецификаций Sun AU или недостатков реализации.
Модуль sunau определяет следующие элементы данных:
- sunau.AUDIO_FILE_MAGIC¶
Целое число, с которого начинается любой корректный файл Sun AU, хранящееся в формате big-endian. Это строка
.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¶
Дополнительные известные значения поля encoding из заголовка AU, которые не поддерживаются этим модулем.
Объекты AU_read¶AU_read Objects
Объекты 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)¶
Устанавливает указатель файла на указанную позицию. Для pos следует использовать только значения, возвращаемые
tell().
- AU_read.tell()¶
Возвращает текущую позицию указателя файла. Обратите внимание, что возвращаемое значение никак не связано с фактической позицией в файле.
Следующие две функции определены для совместимости с aifc
и не делают ничего интересного.
- AU_read.getmarkers()¶
Возвращает
None.
- AU_read.getmark(id)¶
Возбуждает исключение.
Объекты AU_write¶AU_write Objects
Объекты 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() недопустима.