sunau
— Чтение и запись Sun AU файлов¶
Модуль sunau
предоставляет удобный интерфейс для звукового формата Sun
AU. Обратите внимание, что данный модуль совместим по интерфейсу с модулями
aifc
и wave
.
Аудиофайл состоит из заголовка, за которым следуют данные. Поля заголовка:
Поле | Содержание |
---|---|
magic word | Четыре байта .snd . |
header size | Размер заголовка, включая информацию, в байтах. |
data size | Физический размер данных, в байтах. |
encoding | Указывает способ кодированный аудиоотсчетов. |
sample rate | Частота выборки. |
# of channels | Количество каналов в выборках. |
info | ASCII строка с описанием аудиофайла (дополненного нулевыми байтами). |
За исключением информационного поля, у всех полей заголовка размер 4 байта. Все представляют собой 32-битные целые числа без знака, закодированные в обратном порядке байт (big-endian).
Модуль sunau
определяет следующие функции:
-
sunau.
open
(file, mode)¶ Если file является строкой, открывает файл по этому имени, в противном случае обрабатывает его как файлоподобный объект с возможностью поиска. mode может быть любым из:
'r'
- Режим только для чтения.
'w'
- Только режим записи.
Обратите внимание, что он не позволяет читать/записывать файлы.
mode
'r'
возвращает объектAU_read
, а mode'w'
или'wb'
возвращает объектAU_write
.
-
sunau.
openfp
(file, mode)¶ Синоним для
open()
, поддерживаемый для обратной совместимости.Устарело с версии 3.7, будет удалено в 3.9 версии..
Модуль 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
¶ Дополнительные известные значения поля encoding из заголовка 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()
.