aifc
— Чтение и запись файлов AIFF и AIFC¶
Исходный код: Lib/aifc.py.
Этот модуль обеспечивает поддержку чтения и записи файлов AIFF и AIFF-C. AIFF - это Audio Interchange File Format, формат для хранения цифровых звуковых образцов в файле. AIFF-C - это более новая версия формата, включающая возможность сжатия аудиоданных.
Аудиофайлы имеют ряд параметров, которые описывают аудиоданные. Частота дискретизации или частота кадров - это количество раз в секунду, когда происходит дискретизация звука. Количество каналов указывает, является ли звук моно, стерео или квадро. Каждый кадр состоит из одного сэмпла на канал. Размер выборки - это размер в байтах каждой выборки. Таким образом, кадр состоит из nchannels * samplesize
байтов, а секундное аудио - из nchannels * samplesize * framerate
байтов.
Например, аудио качества CD имеет размер выборки два байта (16 бит), использует два канала (стерео) и имеет частоту кадров 44 100 кадров/секунду. Это дает размер кадра 4 байта (2*2), а одна секунда занимает 2*2*44100 байт (176 400 байт).
Модуль aifc
определяет следующую функцию:
-
aifc.
open
(file, mode=None)¶ Открывает файл AIFF или AIFF-C и возвращает экземпляр объекта с методами, которые описаны ниже. Аргументом file является либо строка с именем файла, либо file object. mode должен быть
'r'
или'rb'
, если файл должен быть открыт для чтения, или'w'
или'wb'
, если файл должен быть открыт для записи. Если опущено, то используетсяfile.mode
, если он существует, иначе используется'rb'
. При использовании для записи объект файла должен быть искомым, если только вы не знаете заранее, сколько выборок вы собираетесь записать в общей сложности, и не используетеwriteframesraw()
иsetnframes()
. Функцияopen()
может быть использована в оператореwith
. Когда блокwith
завершается, вызывается методclose()
.Изменено в версии 3.4: Добавлена поддержка оператора
with
.
Объекты, возвращаемые open()
при открытии файла для чтения, имеют следующие методы:
-
aifc.
getnchannels
()¶ Возвращает количество аудиоканалов (1 для моно, 2 для стерео).
-
aifc.
getsampwidth
()¶ Возвращает размер в байтах отдельных образцов.
-
aifc.
getframerate
()¶ Возвращает частоту дискретизации (количество аудиокадров в секунду).
-
aifc.
getnframes
()¶ Возвращает количество аудиокадров в файле.
-
aifc.
getcomptype
()¶ Возвращает массив байтов длины 4, описывающий тип сжатия, использованный в аудиофайле. Для файлов AIFF возвращаемое значение равно
b'NONE'
.
-
aifc.
getcompname
()¶ Возвращает массив байтов, преобразуемый в человекочитаемое описание типа сжатия, использованного в аудиофайле. Для файлов AIFF возвращаемое значение равно
b'not compressed'
.
-
aifc.
getparams
()¶ Возвращает
namedtuple()
(nchannels, sampwidth, framerate, nframes, comptype, compname)
, эквивалентный выводу методовget*()
.
-
aifc.
getmarkers
()¶ Возвращает список маркеров в аудиофайле. Маркер состоит из кортежа, состоящего из трех элементов. Первый - идентификатор метки (целое число), второй - позиция метки в кадрах от начала данных (целое число), третий - имя метки (строка).
-
aifc.
getmark
(id)¶ Возвращает кортеж, описанный в
getmarkers()
для метки с заданным id.
-
aifc.
readframes
(nframes)¶ Считывает и возвращает следующие nframes кадров из аудиофайла. Возвращаемые данные представляют собой строку, содержащую для каждого кадра несжатые сэмплы всех каналов.
-
aifc.
rewind
()¶ Перемотка указателя чтения. Следующий
readframes()
будет начинаться с начала.
-
aifc.
setpos
(pos)¶ Переход к указанному номеру кадра.
-
aifc.
tell
()¶ Возвращает номер текущего кадра.
-
aifc.
close
()¶ Закрытие файла AIFF. После вызова этого метода объект больше не может быть использован.
Объекты, возвращаемые open()
при открытии файла для записи, имеют все вышеперечисленные методы, кроме readframes()
и setpos()
. Кроме того, существуют следующие методы. Методы get*()
могут быть вызваны только после вызова соответствующих методов set*()
. Перед первым вызовом writeframes()
или writeframesraw()
все параметры, кроме количества кадров, должны быть заполнены.
-
aifc.
aiff
()¶ Создать файл AIFF. По умолчанию создается файл AIFF-C, если только имя файла не заканчивается на
'.aiff'
, в этом случае по умолчанию создается файл AIFF.
-
aifc.
aifc
()¶ Создать файл AIFF-C. По умолчанию создается файл AIFF-C, если только имя файла не заканчивается на
'.aiff'
, в этом случае по умолчанию создается файл AIFF.
-
aifc.
setnchannels
(nchannels)¶ Укажите количество каналов в аудиофайле.
-
aifc.
setsampwidth
(width)¶ Укажите размер в байтах аудиосэмплов.
-
aifc.
setframerate
(rate)¶ Укажите частоту выборки в кадрах в секунду.
-
aifc.
setnframes
(nframes)¶ Укажите количество кадров, которые должны быть записаны в аудиофайл. Если этот параметр не задан или задан неправильно, файл должен поддерживать поиск.
-
aifc.
setcomptype
(type, name)¶ Укажите тип сжатия. Если он не указан, аудиоданные не будут сжаты. В файлах AIFF сжатие невозможно. Параметр name должен представлять собой человекочитаемое описание типа сжатия в виде массива байт, параметр type должен представлять собой массив байт длиной 4. В настоящее время поддерживаются следующие типы сжатия:
b'NONE'
,b'ULAW'
,b'ALAW'
,b'G722'
.
-
aifc.
setparams
(nchannels, sampwidth, framerate, comptype, compname)¶ Устанавливает все вышеперечисленные параметры одновременно. Аргументом является кортеж, состоящий из различных параметров. Это означает, что в качестве аргумента для
getparams()
можно использовать результат вызоваsetparams()
.
-
aifc.
setmark
(id, pos, name)¶ Добавляет метку с заданным id (больше 0) и заданным именем в заданную позицию. Этот метод может быть вызван в любое время до
close()
.
-
aifc.
tell
() Возвращает текущую позицию записи в выходном файле. Используется в комбинации с
setmark()
.
-
aifc.
writeframes
(data)¶ Запись данных в выходной файл. Этот метод может быть вызван только после установки параметров аудиофайла.
Изменено в версии 3.4: Теперь принимаются любые bytes-like object.
-
aifc.
writeframesraw
(data)¶ Аналогично
writeframes()
, за исключением того, что заголовок аудиофайла не обновляется.Изменено в версии 3.4: Теперь принимаются любые bytes-like object.
-
aifc.
close
() Закройте файл AIFF. Заголовок файла обновляется, чтобы отразить фактический размер аудиоданных. После вызова этого метода объект больше не может быть использован.