sunau — Читання та запис файлів Sun AU

Вихідний код: Lib/sunau.py

Застаріло з версії 3.11, буде видалено у версії 3.13: Модуль sunau є застарілим (докладніше див. PEP 594).


Модуль sunau забезпечує зручний інтерфейс для звукового формату Sun AU. Зауважте, що цей модуль інтерфейсно сумісний із модулями aifc і wave.

Аудіофайл складається із заголовка, за яким слідують дані. Поля заголовка:

Поле

Зміст

чарівне слово

Чотири байти .snd.

розмір заголовка

Розмір заголовка, включаючи інформацію, у байтах.

розмір даних

Фізичний розмір даних, у байтах.

кодування

Вказує, як закодовано аудіо зразки.

частота дискретизації

Частота дискретизації.

# каналів

Кількість каналів у вибірках.

інформація

Рядок 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().