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() недопустима.