aifc
— Читання та запис файлів AIFF та AIFC¶
Вихідний код: Lib/aifc.py
Цей модуль підтримує читання та запис файлів AIFF і AIFF-C. AIFF — це формат файлів обміну аудіо, формат для зберігання зразків цифрового аудіо у файлі. 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 є або рядком з іменем файлу, або file object. 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
()¶ Повернути список маркерів у звуковому файлі. Маркер складається з кортежу з трьох елементів. Перший — ID позначки (ціле число), другий — позиція позначки у кадрах від початку даних (ціле число), третій — назва позначки (рядок).
-
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 стиснення неможливе. Параметр імені має бути зрозумілим для людини описом типу стиснення у вигляді масиву байтів, параметр типу має бути масивом байтів довжиною 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. Заголовок файлу оновлюється відповідно до фактичного розміру аудіоданих. Після виклику цього методу об’єкт більше не можна використовувати.