Spec-Zone.ru › Python 3.8

aifc — Чтение и запись файлов AIFF и AIFC

Исходный код: Lib/aifc.py

Этот модуль предоставляет поддержку чтения и записи файлов AIFF и AIFF-C. AIFF — это формат Audio Interchange File Format, предназначенный для хранения цифровых аудиосэмплов в файле. AIFF-C — это более новая версия формата, которая включает возможность сжатия аудиоданных.

Аудиофайлы имеют ряд параметров, описывающих аудиоданные. Частота дискретизации или частота кадров — это количество раз в секунду, когда звук дискретизируется. Количество каналов указывает, является ли звук моно, стерео или квадро. Каждый кадр состоит из одного сэмпла на канал. Размер сэмпла — это размер в байтах каждого сэмпла. Таким образом, один кадр состоит из nchannels * samplesize байт, а одна секунда аудио состоит из nchannels * samplesize * framerate байт.

Например, аудио высокого качества CD имеет размер сэмпла в два байта (16 бит), использует два канала (стерео) и имеет частоту кадров 44100 кадров/секунду. Это даёт размер кадра в 4 байта (2*2), а одна секунда занимает 2*2*44100 байт (176400 байт).

Модуль aifc определяет следующую функцию:

aifc.open(file, mode=None)

Открыть файл AIFF или AIFF-C и вернуть экземпляр объекта с методами, описанными ниже. Аргумент file — это либо строка, имя файла, либо объект файла. 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: Теперь принимается любой объект-подобный байтам.

aifc.writeframesraw(data)

Подобно writeframes(), за исключением того, что заголовок аудиофайла не обновляется.

Изменено в версии 3.4: Теперь принимается любой объект-подобный байтам.

aifc.close()

Закрыть файл AIFF. Заголовок файла обновляется, чтобы отразить фактический размер аудиоданных. После вызова этого метода объект больше использовать нельзя.

© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/aifc.html

Spec-Zone.ru

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