sunau — Чтение и запись файлов Sun AU¶
Исходный код: Lib/sunau.py.
Модуль sunau предоставляет удобный интерфейс к звуковому формату Sun AU. Обратите внимание, что этот модуль совместим по интерфейсу с модулями aifc и wave.
Аудиофайл состоит из заголовка, за которым следуют данные. Поля заголовка следующие:
Поле |
Содержание |
|---|---|
волшебное слово |
Четыре байта |
размер заголовка |
Размер заголовка, включая информацию, в байтах. |
размер данных |
Физический размер данных, в байтах. |
кодирование |
Указывает, как кодируются аудиосэмплы. |
частота дискретизации |
Частота дискретизации. |
# каналов |
Количество каналов в выборках. |
информация |
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() устанавливать какие-либо параметры недопустимо.