Spec-Zone.ru › Python 3.5

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

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

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

Примечание

Некоторые операции могут работать только под IRIX; при попытке импорта модуля cl, который доступен только под IRIX, они приведут к ImportError.

Аудиофайлы имеют ряд параметров, которые описывают аудиоданные. Частота дискретизации (или частота кадров) — это количество раз в секунду, когда звук дискретизируется. Количество каналов указывает, является ли аудио моно, стерео или квадро. Каждый кадр состоит из одного сэмпла на канал. Размер сэмпла — это размер в байтах каждого сэмпла. Таким образом, один кадр состоит из 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)

Добавляет метку с заданным идентификатором (больше 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.5/library/aifc.html

Spec-Zone.ru

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