Содержание страницы
22.3. sunau – чтение и запись Sun AU файлов¶sunau – Read and write Sun AU files
Исходный код: Lib/sunau.py
Модуль sunau предоставляет удобный интерфейс для звукового формата Sun AU.
Обратите внимание, что этот модуль совместим по интерфейсу с модулями aifc и wave.
Аудиофайл состоит из заголовка, за которым следуют данные. Поля заголовка:
| Поле | Содержание |
|---|---|
| магическое слово | Четыре байта .snd. |
| размер заголовка | Размер заголовка в байтах, включая поле info. |
| размер данных | Физический размер данных в байтах. |
| кодировка | Указывает, как закодированы аудиосэмплы. |
| частота дискретизации | Частота дискретизации. |
| количество каналов | Количество каналов в сэмплах. |
| информация | Строка 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, хранящееся в формате big-endian. Это строка
.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¶ Дополнительные известные значения поля encoding из заголовка AU, которые не поддерживаются этим модулем.
22.3.1. Объекты AU_read¶AU_read Objects
Объекты 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)¶ Возбуждает исключение.
22.3.2. Объекты AU_write¶AU_write Objects
Объекты 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() недопустима.