Spec-Zone.ru › Python 2.7

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API