aifc — Чтение и запись файлов AIFF и AIFC
Исходный код: Lib/aifc.py
Этот модуль предоставляет поддержку чтения и записи файлов AIFF и AIFF-C. AIFF — это формат аудиообмена (Audio Interchange File Format), формат для хранения цифровых аудиообразцов в файле. AIFF-C — это более новая версия формата, которая включает возможность сжатия аудиоданных.
Примечание
Некоторые операции могут работать только под IRIX; они будут вызывать ImportError при попытке импортировать модуль cl, который доступен только под IRIX.
Аудиофайлы имеют ряд параметров, описывающих аудиоданные. Частота дискретизации (или частота кадров) — это количество раз в секунду, когда звук дискретизируется. Количество каналов указывает, является ли аудио моно, стерео или квадро. Каждый кадр состоит из одного образца на канал. Разрядность образца — это размер в байтах каждого образца. Таким образом, кадр состоит из nchannels*samplesize байт, а количество байт в аудио за секунду составляет nchannels*samplesize*framerate байт.
Например, аудио высокого качества CD имеет разрядность образца в два байта (16 бит), использует два канала (стерео) и имеет частоту кадров 44100 кадров/секунду. Это даёт размер кадра в 4 байта (2*2), а за секунду аудио занимает 2*2*44100 байт (176400 байт).
Модуль aifc определяет следующую функцию:
-
aifc.open(file[, mode]) -
Открывает файл AIFF или AIFF-C и возвращает экземпляр объекта с методами, описанными ниже. Аргумент file — это либо строка, называющая файл, либо объект файла. mode должен быть
'r'или'rb'при открытии файла для чтения, или'w'или'wb'при открытии файла для записи. Если он опущен, используетсяfile.mode, если он существует, в противном случае используется'rb'. При записи объект файла должен поддерживать позиционирование в файле (seekable), если вы не знаете заранее, сколько образцов вы собираетесь записать в целом и используетеwriteframesraw()иsetnframes().
Объекты, возвращаемые open() при открытии файла для чтения, имеют следующие методы:
-
aifc.getnchannels() -
Возвращает количество аудиоканалов (1 для моно, 2 для стерео).
-
aifc.getsampwidth() -
Возвращает размер в байтах отдельных образцов.
-
aifc.getframerate() -
Возвращает частоту дискретизации (количество аудиокадров в секунду).
-
aifc.getnframes() -
Возвращает количество аудиокадров в файле.
-
aifc.getcomptype() -
Возвращает строку из четырёх символов, описывающую тип сжатия, используемого в аудиофайле. Для файлов AIFF возвращается
'NONE'.
-
aifc.getcompname() -
Возвращает удобочитаемое описание типа сжатия, используемого в аудиофайле. Для файлов AIFF возвращается
'not compressed'.
-
aifc.getparams() -
Возвращает кортеж, содержащий все вышеперечисленные значения в указанном порядке.
-
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) -
Устанавливает количество кадров, которые будут записаны в аудиофайл. Если этот параметр не установлен или не установлен правильно, файл должен поддерживать позиционирование (seek).
-
aifc.setcomptype(type, name) -
Устанавливает тип сжатия. Если не указан, аудиоданные не будут сжаты. В файлах AIFF сжатие невозможно. Параметр name должен быть удобочитаемым описанием типа сжатия, параметр type — строкой из четырёх символов. В настоящее время поддерживаются следующие типы сжатия: NONE, ULAW, ALAW, G722.
-
aifc.setparams(nchannels, sampwidth, framerate, comptype, compname) -
Устанавливает все вышеперечисленные параметры сразу. Аргументом является кортеж, состоящий из различных параметров. Это означает, что результат вызова
getparams()можно использовать в качестве аргумента дляsetparams().
-
aifc.setmark(id, pos, name) -
Добавляет метку с заданным идентификатором (большим 0) и именем в заданной позиции. Этот метод можно вызывать в любое время до
close().
-
aifc.tell() -
Возвращает текущую позицию записи в выходном файле. Полезно в сочетании с
setmark().
-
aifc.writeframes(data) -
Записывает данные в выходной файл. Этот метод можно вызывать только после того, как параметры аудиофайла будут установлены.
-
aifc.writeframesraw(data) -
Подобно
writeframes(), за исключением того, что заголовок аудиофайла не обновляется.
-
aifc.close() -
Закрывает файл AIFF. Заголовок файла обновляется, чтобы отразить фактический размер аудиоданных. После вызова этого метода объект больше использовать нельзя.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/aifc.html