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

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

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


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

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

Поле

Содержание

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

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

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

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

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

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

кодирование

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

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

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

# каналов

Количество каналов в выборках.

информация

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, хранящееся в форме старшего порядка. Это строка .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)

Установить указатель файла в указанную позицию. Для 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() устанавливать какие-либо параметры недопустимо.

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