Документация Python неофициальный перевод

sunau.md

292 строк · 10.1 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.1/library/sunau.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 21.3. `sunau` – Чтение и запись файлов Sun AU89Модуль `sunau` предоставляет удобный интерфейс для звукового формата Sun AU. Обратите внимание, что этот модуль совместим по интерфейсу с модулями [`aifc`](https://python-all.ru/3.1/library/aifc.html#module-aifc) и [`wave`](https://python-all.ru/3.1/library/wave.html#module-wave).1011Аудиофайл состоит из заголовка, за которым следуют данные. Поля заголовка:1213| Поле | Содержание |14| --- | --- |15| магическое слово | Четыре байта `.snd`. |16| размер заголовка | Размер заголовка в байтах, включая поле info. |17| размер данных | Физический размер данных в байтах. |18| кодировка | Указывает, как закодированы аудиосэмплы. |19| частота дискретизации | Частота дискретизации. |20| количество каналов | Количество каналов в сэмплах. |21| информация | Строка ASCII с описанием аудиофайла (дополненная нулевыми байтами). |2223За исключением поля info, все поля заголовка имеют размер 4 байта. Все они являются 32-разрядными целыми числами без знака, закодированными в порядке байтов от старшего к младшему (big-endian).2425Модуль `sunau` определяет следующие функции:2627#### `sunau.open(file, mode)`2829Если *file* – строка, открывается файл с этим именем; в противном случае он рассматривается как файлоподобный объект с произвольным доступом. *mode* может быть одним из следующих значений:3031**`'r'`**3233Режим только для чтения.3435**`'w'`**3637Режим только для записи.3839Обратите внимание: этот режим не поддерживает файлы, открытые одновременно на чтение и запись.4041Режим *mode* со значением `'r'` возвращает объект `AU_read`, а режим *mode* со значением `'w'` или `'wb'` возвращает объект `AU_write`.4243#### `sunau.openfp(file, mode)`4445Синоним для4647[`open()`](https://python-all.ru/3.1/library/sunau.html#sunau.open)4849, сохранён для обратной совместимости.5051Модуль `sunau` определяет следующее исключение:5253#### `exception sunau.Error`5455Исключение, возникающее, когда что-то невозможно из-за спецификаций Sun AU или недостатков реализации.5657Модуль `sunau` определяет следующие элементы данных:5859#### `sunau.AUDIO_FILE_MAGIC`6061Целое число, с которого начинается любой корректный файл Sun AU, хранящееся в формате big-endian. Оно представляет собой строку6263`.snd`6465, интерпретированную как целое число.6667#### `sunau.AUDIO_FILE_ENCODING_MULAW_8`6869#### `sunau.AUDIO_FILE_ENCODING_LINEAR_8`7071#### `sunau.AUDIO_FILE_ENCODING_LINEAR_16`7273#### `sunau.AUDIO_FILE_ENCODING_LINEAR_24`7475#### `sunau.AUDIO_FILE_ENCODING_LINEAR_32`7677#### `sunau.AUDIO_FILE_ENCODING_ALAW_8`7879Значения поля encoding из заголовка AU, которые поддерживаются этим модулем.8081#### `sunau.AUDIO_FILE_ENCODING_FLOAT`8283#### `sunau.AUDIO_FILE_ENCODING_DOUBLE`8485#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G721`8687#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G722`8889#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G723_3`9091#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G723_5`9293Дополнительные известные значения поля encoding из заголовка AU, которые не поддерживаются этим модулем.9495## 21.3.1. Объекты AU\_read9697Объекты AU\_read, возвращаемые [`open()`](https://python-all.ru/3.1/library/sunau.html#sunau.open) выше, имеют следующие методы:9899#### `AU_read.close()`100101Закрывает поток и делает экземпляр непригодным для использования. (Вызывается автоматически при удалении.)102103#### `AU_read.getnchannels()`104105Возвращает количество аудиоканалов (1 для моно, 2 для стерео).106107#### `AU_read.getsampwidth()`108109Возвращает ширину выборки в байтах.110111#### `AU_read.getframerate()`112113Возвращает частоту дискретизации.114115#### `AU_read.getnframes()`116117Возвращает количество аудиофреймов.118119#### `AU_read.getcomptype()`120121Возвращает тип сжатия. Поддерживаемые типы сжатия:122123`'ULAW'`124125,126127`'ALAW'`128129и130131`'NONE'`132133.134135#### `AU_read.getcompname()`136137Человекочитаемая версия138139[`getcomptype()`](https://python-all.ru/3.1/library/sunau.html#sunau.AU_read.getcomptype)140141. Поддерживаемые типы имеют соответствующие названия:142143`'CCITT G.711 u-law'`144145,146147`'CCITT G.711 A-law'`148149и150151`'not compressed'`152153.154155#### `AU_read.getparams()`156157`(nchannels, sampwidth, framerate, nframes, comptype, compname)`158159, эквивалентен результату методов160161`get*()`162163.164165#### `AU_read.readframes(n)`166167Читает и возвращает не более168169*n*170171кадров аудио в виде строки байтов. Данные возвращаются в линейном формате. Если исходные данные в формате u-LAW, они будут преобразованы.172173#### `AU_read.rewind()`174175Перемещает указатель файла в начало аудиопотока.176177Следующие два метода определяют термин «позиция», совместимый между ними, а в остальном зависящий от реализации.178179#### `AU_read.setpos(pos)`180181Устанавливает указатель файла на указанную позицию. Для182183*pos*184185следует использовать только значения, возвращённые из186187[`tell()`](https://python-all.ru/3.1/library/sunau.html#sunau.AU_read.tell)188189.190191#### `AU_read.tell()`192193Возвращает текущую позицию указателя файла. Обратите внимание, что возвращаемое значение никак не связано с фактической позицией в файле.194195Следующие две функции определены для совместимости с [`aifc`](https://python-all.ru/3.1/library/aifc.html#module-aifc) и не делают ничего интересного.196197#### `AU_read.getmarkers()`198199Возвращает200201`None`202203.204205#### `AU_read.getmark(id)`206207Возбуждает исключение.208209## 21.3.2. Объекты AU\_write210211Объекты AU\_write, возвращаемые [`open()`](https://python-all.ru/3.1/library/sunau.html#sunau.open) выше, имеют следующие методы:212213#### `AU_write.setnchannels(n)`214215Устанавливает количество каналов.216217#### `AU_write.setsampwidth(n)`218219Устанавливает ширину сэмпла (в байтах).220221#### `AU_write.setframerate(n)`222223Устанавливает частоту кадров.224225#### `AU_write.setnframes(n)`226227Устанавливает количество кадров. Это значение можно изменить позже, когда будет записано больше кадров .228229#### `AU_write.setcomptype(type, name)`230231Устанавливает тип сжатия и описание. При выводе поддерживаются только232233`'NONE'`234235и236237`'ULAW'`238239.240241#### `AU_write.setparams(tuple)`242243Кортеж244245*tuple*246247должен быть248249`(nchannels, sampwidth, framerate, nframes, comptype, compname)`250251, со значениями, допустимыми для методов252253`set*()`254255. Устанавливает все параметры.256257#### `AU_write.tell()`258259Возвращает текущую позицию в файле, с тем же замечанием, что и для методов260261[`AU_read.tell()`](https://python-all.ru/3.1/library/sunau.html#sunau.AU_read.tell)262263и264265[`AU_read.setpos()`](https://python-all.ru/3.1/library/sunau.html#sunau.AU_read.setpos)266267.268269#### `AU_write.writeframesraw(data)`270271Записывает аудиокадры без коррекции272273*nframes*274275.276277#### `AU_write.writeframes(data)`278279Записывает аудиокадры и проверяет, что280281*nframes*282283корректен.284285#### `AU_write.close()`286287Проверяет, что *nframes* корректен, и закрывает файл.288289Этот метод вызывается при удалении.290291Обратите внимание, что устанавливать какие-либо параметры после вызова `writeframes()` или `writeframesraw()` недопустимо.292