sunau — Чтение и запись файлов Sun AU

Исходный код: Lib/sunau.py

Утратил актуальность с версии 3.11, будет удален в версии 3.13: Модуль sunau устарел (подробнее см. PEP 594).


Модуль sunau предоставляет удобный интерфейс для звукового формата Sun AU. Обратите внимание, что этот модуль совместим по интерфейсу с модулями aifc и wave.

Аудиофайл состоит из заголовка, за которым следуют данные. Поля заголовка являются:

Поле

Содержание

волшебное слово

Четыре байта .snd.

размер заголовка

Размер заголовка, включая информацию, в байтах.

размер данных

Физический размер данных в байтах.

кодирование

Указывает, как кодируются аудиосэмплы.

частота дискретизации

Частота дискретизации.

# 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() задавать какие-либо параметры недопустимо.

Вернуться на верх