REEF WAVE
Formato de arquivo de áudio de forma de onda (WAVE) | |
---|---|
Extensão do arquivo : |
.wav
|
Tipo MIME : | audio / vnd.wave audio / wav audio / wave audio / x-wav |
Desenvolvido por: | Microsoft e IBM |
Modelo: | Arquivo de áudio |
Prorrogado por: | RECIFE |
O formato de arquivo WAVE é um formato de contêiner para o armazenamento digital de dados de áudio baseado no Resource Interchange File Format (RIFF) definido pela Microsoft para Windows . Antes dos dados de áudio, um arquivo WAVE contém pelo menos informações sobre seu formato.
Ele geralmente contém os chamados dados brutos PCM , ou seja, uma representação discreta de tempo e valor do curso de tempo de um sinal. A qualidade do som gravado depende então de dois valores, a taxa de amostragem (número de amostras por unidade de tempo) e a resolução (profundidade de bits); no caso de dados comprimidos também do método, e. B. ADPCM ou MP3 .
Em contraste com o formato AIFF semelhante , as tags ID3 não podem ser salvas com WAV .
Estrutura de arquivo
O formato RIFF consiste em várias seções ( blocos em inglês ), que são estruturados como o IFF , exceto pela ordem de bytes : byte de ordem inferior (LSB) primeiro, ou seja , na ordem de bytes little-endian . A especificação WAVE define três seções como obrigatórias: A seção RIFF identifica o arquivo como um arquivo .wav e contém as outras seções como um contêiner. A seção FORMAT contém parâmetros como B. a taxa de amostragem. A seção DATA contém a forma de onda.
No curso do desenvolvimento descoordenado, emergiu um número incontrolável de outros tipos de seção com conteúdo parcialmente redundante. Um exemplo é a seção “Rótulo” e a seção “Nota”, em que ambas as entradas de ponto de sinalização na seção “Sugestão” têm um rótulo. Um "rótulo" denota o título de um ponto de sinalização, "nota" um comentário. Eles são armazenados como subseções (Inglês subchunks ) na seção Associated Lista de dados de nível superior. Há também um grande número de formatos compactados para os quais uma seção “Fato” com o tamanho descompactado é vinculante, mas que, por outro lado, define uma ampla variedade de parâmetros, o que torna o suporte total do formato WAV ainda mais difícil para os desenvolvedores.
Seção RIFF (também seção "RIFF WAVE")
Ele contém as outras seções como um contêiner, seu cabeçalho consiste apenas em
-
chunkID
(char[4]
, "REEF") -
ChunkSize
(uint32_t
, = Tamanho do arquivo em bytes - 8) -
riffType
(char[4]
, "WAVE")
Seção "Formato"
Ele começa com o identificador "fmt" e deve estar contido exatamente uma vez no arquivo - ou seja, como a primeira subseção, que, no entanto, não pode ser considerada mais do que no fato de que o bloco de dados é o último. Em seu ChunkSize
conteúdo, o geral de um conjunto de parâmetros e uma parte específica do formato subsequente consiste a seguir. A parte geral:
-
wFormatTag
(uint16_t
Identificação do formato usado, por exemplo, 0x0001 significa PCM, o formato canônico não compactado) -
wChannels
(uint16_t
) -
dwSamplesPerSec
(uint32_t
, Taxa de amostragem em Hz, por exemplo, 0x0000AC44 significa 44100) -
dwAvgBytesPerSec
(uint32_t
, largura de banda de transmissão necessária) -
wBlockAlign
(uint16_t
, Tamanho dos quadros em bytes)
Para dados PCM, a seção de formato tem apenas este campo:
-
wBitsPerSample
(uint16_t
Resolução de quantização, idêntica para todos os canais)
Se a compressão não for usada, dwAvgBytesPerSec
o produto da taxa de amostragem e o tamanho do quadro é. O tamanho do quadro resulta da especificação de que todos os valores na seção de dados devem ser codificados como um inteiro com um tamanho apenas suficiente em bytes (quaisquer bits de preenchimento necessários estão na extremidade inferior com o valor 0, preenchimento de zero ). O seguinte se aplica ao formato PCM
-
wBlockAlign = wChannels * ((wBitsPerSample + 7) / 8)
(Divisão inteira sem resto),
portanto, o tamanho do quadro para o estéreo de 12 bits não é três, mas quatro bytes. Com dois canais (estéreo), primeiro o canal esquerdo, depois o canal direito é salvo.
Seção "Dados"
Possui o identificador "dados". A sua chunkSize
inclui (como com todas as secções) nem os 8 bytes de tamanho do código e, possivelmente, até mesmo no final do prescrito alinhamento meios para palavra fronteiras byte zero. Seu conteúdo é uma série de frames.
Este formato, salvo sem um cabeçalho, geralmente tem o final .raw e requer conhecimento da taxa de amostragem, profundidade de bits e ordem de bytes para reprodução (a última é definida apenas em RIFF, não para PCM bruto).
O tamanho da seção “Dados” no formato de dados PCM é calculado da seguinte maneira: dwSamplesPerSec
Quadros com wChannels
amostras de um ou dois bytes cada ocorrem por segundo . Para qualidade de CD (16 bits estéreo = 4 bytes por amostra (2 bytes por canal), 44.100 Hertz). B. Portanto, cerca de 10 megabytes por minuto (60 s x 44.100 Hz x 4 bytes).
Exemplo de formato WAVE-PCM geralmente legível
Cabeçalho RIFF (12 bytes):
Desvio | Modelo | Comprimento (em bytes) | contente |
---|---|---|---|
0 (0x00) | Caracteres | 4º | 'RECIFE' |
4 (0x04) | não assinado | 4º | <Tamanho do arquivo> - 8 |
8 (0x08) | Caracteres | 4º | 'ACENO' |
A seção fmt (24 bytes) descreve o formato das amostras individuais:
Desvio | comprimento | contente | Descrição |
---|---|---|---|
12 (0x0C) | 4º | 'fmt' | Assinatura do cabeçalho (observe o espaço a seguir) |
16 (0x10) | 4º | <comprimento fmt> | Comprimento do cabeçalho fmt restante (16 bytes) |
20 (0x14) | 2 | <format tag> | Formato de dados das amostras (consulte a tabela separada abaixo) |
22 (0x16) | 2 | <canais> | Número de canais: 1 = mono, 2 = estéreo; entretanto, mais de 2 canais (por exemplo, para som surround) são possíveis. |
24 (0x18) | 4º | <taxa de amostragem> | Amostras por segundo por canal (por exemplo, 44100) |
28 (0x1C) | 4º | <bytes / segundo> | Taxa de amostragem · tamanho do quadro |
32 (0x20) | 2 | <bloco de alinhamento> | Tamanho do quadro = <número de canais> ((<bits / amostra (de um canal)> + 7) / 8) (divisão sem resto) |
34 (0x22) | 2 | <bits / amostra> | Número de bits de dados por valor de amostra por canal (por exemplo, 12) |
A seção de dados contém as amostras:
Desvio | comprimento | contente | Descrição |
---|---|---|---|
36 (0x24) | 4º | 'dados' | Assinatura do cabeçalho |
40 (0x28) | 4º | <comprimento> | Comprimento do bloco de dados, máx. <Tamanho do arquivo> - 44 |
44 (0x2C) | <bloco de alinhamento> | a (s) primeira (s) amostra (s) | |
<bloco de alinhamento> | a (s) segunda (s) amostra (s) | ||
... | ... |
Formatos de dados (tag de formato)
EU IA | Descrição |
---|---|
0x0001 | PCM |
0x0002 | MS ADPCM |
0x0003 | IEEE FLOAT |
0x0005 | IBM CVSD |
0x0006 | UMA LEI |
0x0007 | MULAW |
0x0010 | OKI ADPCM |
0x0011 | DVI / IMA ADPCM |
0x0012 | MEDIASPACE ADPCM |
0x0013 | SIERRA ADPCM |
0x0014 | G723 ADPCM |
0x0015 | DIGISTD |
0x0016 | DIGIFIX |
0x0017 | DIALOGIC OKI ADPCM |
0x0020 | YAMAHA ADPCM |
0x0021 | SONARC |
0x0022 | DSPGROUP TRUESPEECH |
0x0023 | ECHOSC1 |
0x0024 | AUDIOFILE AF36 |
0x0025 | APTX |
0x0026 | AUDIOFILE AF10 |
0x0030 | DOLBY AC2 |
EU IA | Descrição |
---|---|
0x0031 | GSM610 |
0x0033 | ANTEX ADPCME |
0x0034 | CONTROL RES VQLPC |
0x0035 | CONTROL RES VQLPC |
0x0036 | DIGIADPCM |
0x0037 | CONTROLE RES CR10 |
0x0038 | NMS VBXADPCM |
0x0039 | CS IMAADPCM (Roland RDAC) |
0x0040 | G721 ADPCM |
0x0050 | MPEG-1 Camada I, II |
0x0055 | MPEG-1 Layer III (MP3) |
0x0069 | Xbox ADPCM |
0x0200 | ADPCM CRIATIVO |
0x0202 | CREATIVE FASTSPEECH8 |
0x0203 | CREATIVE FASTSPEECH10 |
0x0300 | FM TOWNS SND |
0x1000 | OLIGSM |
0x1001 | OLIADPCM |
0x1002 | OLICELP |
0x1003 | OLISBC |
0x1004 | OLIOPR |
Desenvolvimento adicional
Devido aos campos de 32 bits usados no formato de arquivo, há um limite de tamanho de 4 GiB, o que corresponde a um tempo de reprodução de cerca de 6,75 horas com dois canais de 16 bits cada e 44100 amostras por segundo ( qualidade de CD ). Com uma maior amplitude ou resolução de tempo ou mais canais, o tempo de reprodução alcançável diminui de acordo. Para contornar essa limitação, Sonic Foundry introduziu uma extensão para o formato que ignora o limite de tamanho de arquivo. Desde que a divisão de software de desktop da Sonic Foundry foi transferida para a Sony Pictures Digital , o formato passou a ser chamado de Sony Pictures Digital Wave 64 ou Wave64 para abreviar ; é fornecido sem custos de licença. A extensão de nome de arquivo sugerida é .w64 . A estrutura interna é deliberadamente baseada no WAVE convencional para simplificar a implementação do software. O uso de campos de 64 bits, com base nas suposições feitas acima, atinge um tempo máximo de reprodução de mais de 3 milhões de anos.
literatura
- Günter Born: Formatos de arquivo do manual de referência. 1990, Addison-Wesley Longman, em várias edições revisadas
- Gunter Born: Manual de formatos de arquivo. ITP Boston 1995.
Links da web
- Formato de áudio WAV ( Memento de 7 de dezembro de 2010 no Internet Archive ) (descrição detalhada como parte do resumo de um seminário para a palestra multimídia na Universidade de Esslingen .)
- “O formato de som * .wav.” Cabeçalho, campo de dados e exemplo de um arquivo PCM WAV para Windows. ( Memento de 4 de janeiro de 2016 no Internet Archive ) (Conciso e claro. De uma tese de Thomas Becker e Dirk Manthey na Universidade de Ciências Aplicadas de Giessen-Friedberg )
- Formato de arquivo WAVE (inglês, mais detalhado)
- Formato de arquivo de áudio WAVE - Especificações (inglês)
- Versão 1.0 da especificação (inglês)
- Timothy John Weber: o formato de arquivo WAVE. Respostas a perguntas comuns. (Inglês)
Evidência individual
- ↑ Especificação de Resource Interchange File Format Services da Microsoft em msdn.microsoft.com (inglês)
- ↑ Thomas Höss e Tobias Rieck: WAV-Audio-Format, fmt-chunk ( Memento de 27 de junho de 2007 no Internet Archive ) on it.fht-esslingen.de
- ↑ Engenharia VCS: Sony Wave64. (PDF) Informações sobre Sony Wave64, acessado em 2 de maio de 2012.