sunau
— Lectura y escritura de ficheros Sun AU¶
Código fuente: Lib/sunau.py
Obsoleto desde la versión 3.11, se eliminará en la versión 3.13: El módulo sunau
está obsoleto (ver PEP 594 para más detalles).
El módulo sunau
provee una interfaz conveniente para el formato de sonido Sun AU. Note que este módulo es de interfaz compatible con los módulos aifc
y wave
.
Un fichero de audio consiste de un encabezado seguido por la información. Los campos del encabezado son:
Campo |
Contenido |
---|---|
palabra mágica |
Los cuatro bytes |
tamaño del encabezado |
Tamaño del encabezado, incluyendo información, en bytes. |
tamaño de la información |
Tamaño físico de la información, en bytes. |
codificación |
Indica cómo las muestras de audio están codificadas. |
tasa de muestra |
La tasa de muestreo. |
# de canales |
El número de canales en las muestras. |
información |
Cadena de caracteres ASCII dando una descripción del fichero de audio (rellenada con bytes nulos). |
Aparte del campo de información, todos los campos de encabezado tienen 4 bytes de tamaño. Todos ellos son enteros sin signo codificados en orden de bytes big-endian.
El módulo sunau
define las siguientes funciones:
- sunau.open(file, mode)¶
Si file es una cadena, abre el fichero por ese nombre, de otra forma lo trata como un objeto similar a un fichero buscable. mode puede ser cualquiera de
'r'
Modo de sólo lectura.
'w'
Modo de sólo escritura.
Note que no acepta ficheros de lectura/escritura.
Un mode de
'r'
retorna un objetoAU_read
, mientras un mode de'w'
o'wb'
retorna un objetoAU_write
.
El módulo sunau
define la siguiente excepción:
- exception sunau.Error¶
Un error generado cuando algo es imposible por especificaciones de Sun AU o deficiencia de implementación.
El módulo sunau
define los siguientes ítems de información:
- sunau.AUDIO_FILE_MAGIC¶
Un entero por cada fichero Sun AU válido comienza con, almacenada en la forma big-endian. Esto es la cadena
.snd
interpretada como un entero.
- 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¶
Valores del campo de codificación para el encabezado AU que son soportados por este módulo.
- 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¶
Valores adicionales conocidos por el campo de codificación del encabezado AU, pero que no son soportados por este módulo.
Objetos AU_read¶
Objetos AU_read, como se retornan por open()
arriba, tienen los siguientes métodos:
- AU_read.close()¶
Cierra el flujo, y hace que la instancia sea inutilizable. (Esto es llamado automáticamente en la eliminación.)
- AU_read.getnchannels()¶
Retorna el número de canales de audio (1 para mono, 2 para estéreo).
- AU_read.getsampwidth()¶
Retorna el ancho de muestra en bytes.
- AU_read.getframerate()¶
Retorna la frecuencia de muestreo.
- AU_read.getnframes()¶
Retorna el número de cuadros por segundo de audio.
- AU_read.getcomptype()¶
Retorna el tipo de compresión. Los tipos de compresión soportados son
'ULAW'
,'ALAW'
y'NONE'
.
- AU_read.getcompname()¶
Versión legible por humanos de
getcomptype()
. Los tipos soportados tienen los nombres respectivos'CCITT G.711 u-law'
,'CCITT G.711 A-law'
y'not compressed'
.
- AU_read.getparams()¶
Retorna un
namedtuple()
(nchannels, sampwidth, framerate, nframes, comptype, compname)
, equivalente a la salida de los métodosget*()
.
- AU_read.readframes(n)¶
Lee y retorna al menos n fotogramas de audio, como un objeto
bytes
. La información será retornada en formato linear. Si la información original está en formato u-LAW, será convertida.
- AU_read.rewind()¶
Rebobina el puntero del fichero al comienzo del flujo de audio.
Los siguientes dos métodos definen un término «position» el cual es compatible entre ellos, y es de otra manera dependiente de la implementación.
- AU_read.setpos(pos)¶
Establece el puntero del fichero a la posición especificada. Sólo valores retornados desde
tell()
deberían ser utilizados por pos.
- AU_read.tell()¶
Retorna la posición actual del puntero de fichero. Note que el valor retornado no tiene nada que ver con la posición actual en el fichero.
Las siguientes dos funciones están definidas por compatibilidad con el aifc
, y no hace nada interesante.
- AU_read.getmarkers()¶
Retorna
None
.
- AU_read.getmark(id)¶
Lanza un error.
Objetos AU_write¶
Objetos AU_write, como se retornan por open()
arriba, tienen los siguientes métodos:
- AU_write.setnchannels(n)¶
Establece el número de canales.
- AU_write.setsampwidth(n)¶
Establece el ancho de muestra (en bytes.)
Distinto en la versión 3.4: Agregado soporte para muestras de 24 bits.
- AU_write.setframerate(n)¶
Establece la velocidad de cuadros por segundo.
- AU_write.setnframes(n)¶
Establece el número de cuadros por segundo. Esto puede ser cambiado más adelante, cuando y si más cuadros por segundo son escritos.
- AU_write.setcomptype(type, name)¶
Establece el tipo de compresión y descripción. Sólo
'NONE'
y'ULAW'
son soportados en salida.
- AU_write.setparams(tuple)¶
La tuple debería ser
(nchannels, sampwidth, framerate, nframes, comptype, compname)
, con valores válidos para los métodosset*()
. Establece todos los parámetros.
- AU_write.tell()¶
Retorna la posición actual en el fichero, con los mismos descargos de responsabilidad para los métodos
AU_read.tell()
yAU_read.setpos()
.
- AU_write.writeframesraw(data)¶
Escribe cuadros por segundo de audio, sin corregir nframes.
Distinto en la versión 3.4: Cualquier bytes-like object es aceptado ahora.
- AU_write.writeframes(data)¶
Escribe cuadros por segundo de audio y se asegura que nframes sea correcto.
Distinto en la versión 3.4: Cualquier bytes-like object es aceptado ahora.
- AU_write.close()¶
Se asegura que nframes sea correcto, y cierra el fichero.
Este método es llamado después de la eliminación.
Note que es inválido establecer cualquier parámetro después de llamar writeframes()
o writeframesraw()
.