Spec-Zone.ru › Python 3.7

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'. При записи объект файла должен поддерживать позиционирование (seek), если заранее неизвестно, сколько сэмплов будет записано в целом, и используется 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)

Устанавливает количество кадров, которые будут записаны в аудиофайл. Если этот параметр не задан или задан неправильно, файл должен поддерживать позиционирование (seek).

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: Теперь принимается любой объект-подобный байтам.

aifc.writeframesraw(data)

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

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

aifc.close()

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

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

Spec-Zone.ru

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