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 .snd da quatro bytes. |
| 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
.sndinterpretada 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().
