22.3. sunau
— Lê e escreve arquivos AU da Sun¶
Código Fonte: Lib/sunau.py
O módulo sunau
fornece uma interface conveniente para o formato de som AU da Sun. Observe que este módulo é compatível com a interface dos módulos aifc
e wave
.
Um arquivo de áudio consiste em um cabeçalho seguido pelos dados. Os campos do cabeçalho são:
Campo |
Conteúdo |
---|---|
palavra mágica |
O |
tamanho do cabeçalho |
Tamanho do cabeçalho, incluindo informações, em bytes. |
tamanho dos dados |
Tamanho físico dos dados, em bytes. |
codificação |
Indica como as amostras de áudio estão codificadas. |
taxa de amostra |
A taxa de amostra. |
nº de canais |
O número de canais nas amostras. |
informações |
Uma string ASCII dando uma descrição do arquivo de áudio (preenchendo com bytes nulos). |
Além do campo de informações, todos os campos de cabeçalho têm 4 bytes de tamanho. Eles são todos inteiros sem sinal de 32 bits, codificados na ordem de bytes big-endian.
O módulo sunau
define as seguintes funções:
-
sunau.
open
(file, mode)¶ Se file for uma string, abra o arquivo com esse nome; caso contrário, trata-o como um objeto arquivo ou similar que pode ser procurado. mode pode ser qualquer um entre
'r'
Modo somente para leitura
'w'
Apenas modo de escrita.
Observe que ele não permite arquivos de leitura e escrita.
Um mode de
'r'
retorna um objetoAU_read
, enquanto um mode de'w'
ou'wb'
retorna um objetoAU_write
.
O módulo sunau
define a seguinte exceção:
-
exception
sunau.
Error
¶ Um erro levantado quando algo é impossível devido às especificações AU da Sun ou deficiência de implementação.
O módulo sunau
define os seguintes itens de dados:
-
sunau.
AUDIO_FILE_MAGIC
¶ Um número inteiro com o qual todo arquivo AU da Sun válido começa, armazenado no formato big-endian. Esta é a string
.snd
interpretada como um inteiro.
-
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 do campo de codificação do cabeçalho de AU que são suportados 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 conhecidos adicionais de codificação do cabeçalho de AU, mas que não são suportados por este módulo.
22.3.1. Objetos AU_read¶
Objetos AU_read, conforme retornado por open()
acima, têm os seguintes métodos:
-
AU_read.
close
()¶ Fecha o fluxo e torna a instância inutilizável. (Isso é chamado automaticamente na exclusão.)
-
AU_read.
getnchannels
()¶ Retorna o número de canais de áudio (1 para mono, 2 para estéreo).
-
AU_read.
getsampwidth
()¶ Retorna a largura da amostra em bytes.
-
AU_read.
getframerate
()¶ Retorna a frequência de amostragem.
-
AU_read.
getnframes
()¶ Retorna o número de quadros de áudio.
-
AU_read.
getcomptype
()¶ Retorna o tipo de compressão. Os tipos de compressão suportados são
'ULAW'
,'ALAW'
e'NONE'
.
-
AU_read.
getcompname
()¶ Versão legível de
getcomptype()
. Os tipos suportados têm os respectivos nomes'CCITT G.711 u-law'
,'CCITT G.711 A-law'
e'not compressed'
.
-
AU_read.
getparams
()¶ Retorna a
namedtuple()
(nchannels, sampwidth, framerate, nframes, comptype, compname)
, equivalente à saída dos métodosget*()
.
-
AU_read.
readframes
(n)¶ Lê e retorna no máximo n quadros de áudio, como um objeto
bytes
. Os dados serão retornados em formato linear. Se os dados originais estiverem no formato u-LAW, eles serão convertidos.
-
AU_read.
rewind
()¶ Retrocede o ponteiro do arquivo para o início do fluxo de áudio.
Os dois métodos a seguir definem um termo “posição” que é compatível entre eles e é dependente da implementação.
-
AU_read.
setpos
(pos)¶ Define o ponteiro do arquivo para a posição especificada. Apenas os valores retornados de
tell()
devem ser usados para pos.
-
AU_read.
tell
()¶ Retorna a posição atual do ponteiro do arquivo. Observe que o valor retornado não tem nada a ver com a posição real no arquivo.
As duas funções a seguir são definidas para compatibilidade com o aifc
, e não fazem nada de interessante.
-
AU_read.
getmarkers
()¶ Retorna
None
.
-
AU_read.
getmark
(id)¶ Levanta um erro.
22.3.2. Objetos AU_write¶
Objetos AU_write, conforme retornado por open()
acima, têm os seguintes métodos:
-
AU_write.
setnchannels
(n)¶ Define o número de canais.
-
AU_write.
setsampwidth
(n)¶ Define a largura da amostra (em bytes).
Alterado na versão 3.4: Adicionado suporte para amostras de 24 bits.
-
AU_write.
setframerate
(n)¶ Define a taxa de quadros.
-
AU_write.
setnframes
(n)¶ Define o número de quadros. Isso pode ser alterado posteriormente, quando e se mais quadros forem gravados.
-
AU_write.
setcomptype
(type, name)¶ Define o tipo de compactação e a descrição. Somente
'NONE'
e'ULAW'
são suportados na saída.
-
AU_write.
setparams
(tuple)¶ A tuple deve ser
(nchannels, sampwidth, framerate, nframes, comptype, compname)
, com valores válidos para os métodosset*()
. Define todos os parâmetros.
-
AU_write.
tell
()¶ Retorna a posição atual no arquivo, com as mesmas observações dos métodos
AU_read.tell()
eAU_read.setpos()
.
-
AU_write.
writeframesraw
(data)¶ Escreve quadros de áudio, sem corrigir nframes.
Alterado na versão 3.4: Todo objeto do tipo byte agora é aceito.
-
AU_write.
writeframes
(data)¶ Escreve quadros de áudio e certifica-se de que nframes esteja correto.
Alterado na versão 3.4: Todo objeto do tipo byte agora é aceito.
-
AU_write.
close
()¶ Certifica-se de que nframes está correto e fecha o arquivo.
Este método é chamado após a exclusão.
Note that it is invalid to set any parameters after calling writeframes()
or writeframesraw()
.