Spec-Zone.ru › Python 3.6

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 — это либо строка, содержащая имя файла, либо объект файла. 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)

Добавляет метку с заданным идентификатором (больше 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. Заголовок файла обновляется, чтобы отразить фактический размер аудиоданных. После вызова этого метода объект больше нельзя использовать.

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

Spec-Zone.ru

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