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