sunau
— Читання та запис файлів Sun AU¶
Вихідний код: Lib/sunau.py
Застаріло з версії 3.11, буде видалено у версії 3.13: Модуль sunau
є застарілим (докладніше див. PEP 594).
Модуль sunau
забезпечує зручний інтерфейс для звукового формату Sun AU. Зауважте, що цей модуль інтерфейсно сумісний із модулями aifc
і wave
.
Аудіофайл складається із заголовка, за яким слідують дані. Поля заголовка:
Поле |
Зміст |
---|---|
чарівне слово |
Чотири байти |
розмір заголовка |
Розмір заголовка, включаючи інформацію, у байтах. |
розмір даних |
Фізичний розмір даних, у байтах. |
кодування |
Вказує, як закодовано аудіо зразки. |
частота дискретизації |
Частота дискретизації. |
# каналів |
Кількість каналів у вибірках. |
інформація |
Рядок ASCII, що містить опис аудіофайлу (доповнений нульовими байтами). |
Окрім інформаційного поля, усі поля заголовка мають розмір 4 байти. Усі вони являють собою 32-розрядні цілі числа без знаку, закодовані в порядку байтів у порядку байтів.
Модуль sunau
визначає такі функції:
- sunau.open(file, mode)¶
Якщо file є рядком, відкрийте файл із таким іменем, інакше розглядайте його як файлоподібний об’єкт, який можна шукати. режим може бути будь-яким із
'r''
Режим тільки читання.
'w'
Режим лише запису.
Зверніть увагу, що він не дозволяє читати/записувати файли.
Режим
'r'
повертає об’єктAU_read
, тоді як режим'w'
або'wb'
повертаєAU_write
об’єкт.
Модуль sunau
визначає такий виняток:
- exception sunau.Error¶
Помилка виникає, коли щось неможливо через специфікації Sun AU або недолік реалізації.
Модуль sunau
визначає такі елементи даних:
- sunau.AUDIO_FILE_MAGIC¶
Ціле число, з якого починається кожен дійсний файл Sun AU, зберігається у формі старшого порядку. Це рядок
.snd
, який інтерпретується як ціле число.
- sunau.AUDIO_FILE_ENCODING_MULAW_8¶
- sunau.AUDIO_FILE_ENCODING_LINEAR_8¶
- sunau.AUDIO_FILE_ENCODING_LINEAR_16¶
- sunau.AUDIO_FILE_ENCODING_LINEAR_24¶
- sunau.AUDIO_FILE_ENCODING_LINEAR_32¶
- sunau.AUDIO_FILE_ENCODING_ALAW_8¶
Значення поля кодування із заголовка AU, які підтримуються цим модулем.
- sunau.AUDIO_FILE_ENCODING_FLOAT¶
- sunau.AUDIO_FILE_ENCODING_DOUBLE¶
- sunau.AUDIO_FILE_ENCODING_ADPCM_G721¶
- sunau.AUDIO_FILE_ENCODING_ADPCM_G722¶
- sunau.AUDIO_FILE_ENCODING_ADPCM_G723_3¶
- sunau.AUDIO_FILE_ENCODING_ADPCM_G723_5¶
Додаткові відомі значення поля кодування із заголовка AU, які не підтримуються цим модулем.
Об’єкти AU_read¶
Об’єкти AU_read, які повертає open()
вище, мають такі методи:
- AU_read.close()¶
Закрийте потік і зробіть екземпляр непридатним для використання. (Це викликається автоматично під час видалення.)
- AU_read.getnchannels()¶
Повертає кількість аудіоканалів (1 для моно, 2 для стерео).
- AU_read.getsampwidth()¶
Повертає ширину вибірки в байтах.
- AU_read.getframerate()¶
Повертає частоту вибірки.
- AU_read.getnframes()¶
Повертає кількість звукових кадрів.
- AU_read.getcomptype()¶
Повертає тип стиснення. Підтримувані типи стиснення: ULAW, ALAW і NONE.
- AU_read.getcompname()¶
Зрозуміла для людини версія
getcomptype()
. Підтримувані типи мають відповідні назви «CCITT G.711 u-law», «CCITT G.711 A-law» і «not compressed».
- AU_read.getparams()¶
Повертає
namedtuple()
(nchannels, sampwidth, framerate, nframes, comptype, compname)
, еквівалентний виводу методівget*()
.
- AU_read.readframes(n)¶
Читає та повертає щонайбільше n кадрів аудіо як об’єкт
bytes
. Дані будуть повернуті в лінійному форматі. Якщо вихідні дані мають формат u-LAW, їх буде перетворено.
- AU_read.rewind()¶
Перемотайте покажчик файлу на початок аудіопотоку.
Наступні два методи визначають термін «позиція», який є сумісним між ними, а в інших випадках залежить від реалізації.
- AU_read.setpos(pos)¶
Встановіть покажчик файлу у вказане положення. Для pos слід використовувати лише значення, які повертає
tell()
.
- AU_read.tell()¶
Повернути поточне положення покажчика файлу. Зверніть увагу, що повернуте значення не має нічого спільного з фактичною позицією у файлі.
Наступні дві функції визначені для сумісності з aifc
і не роблять нічого цікавого.
- AU_read.getmarkers()¶
Повертає
None
.
- AU_read.getmark(id)¶
Викликати помилку.
Об’єкти AU_write¶
Об’єкти AU_write, які повертає open()
вище, мають такі методи:
- AU_write.setnchannels(n)¶
Встановіть кількість каналів.
- AU_write.setsampwidth(n)¶
Встановіть ширину вибірки (у байтах).
Змінено в версії 3.4: Додано підтримку 24-розрядних зразків.
- AU_write.setframerate(n)¶
Встановіть частоту кадрів.
- AU_write.setnframes(n)¶
Встановіть кількість кадрів. Це можна змінити пізніше, коли і якщо буде записано більше кадрів.
- AU_write.setcomptype(type, name)¶
Встановіть тип стиснення та опис. На виводі підтримуються лише
'NONE'
і'ULAW'
.
- AU_write.setparams(tuple)¶
Кортеж має бути
(nchannels, sampwidth, framerate, nframes, comptype, compname)
зі значеннями, дійсними для методівset*()
. Встановити всі параметри.
- AU_write.tell()¶
Повертає поточну позицію у файлі з тим самим застереженням для методів
AU_read.tell()
іAU_read.setpos()
.
- AU_write.writeframesraw(data)¶
Записуйте аудіокадри, не виправляючи nframes.
Змінено в версії 3.4: Тепер приймається будь-який bytes-like object.
- AU_write.writeframes(data)¶
Напишіть звукові кадри та переконайтеся, що nframes правильний.
Змінено в версії 3.4: Тепер приймається будь-який bytes-like object.
- AU_write.close()¶
Переконайтеся, що nframes правильний, і закрийте файл.
Цей метод викликається при видаленні.
Зауважте, що не можна встановлювати будь-які параметри після виклику writeframes()
або writeframesraw()
.