O que é um arquivo RIFF?
Resource Interchange File Format (RIFF) é uma estrutura de contêiner baseada em blocos, desenvolvida pela Microsoft e pela IBM. Seus blocos identificados e delimitados por tamanho formam a base de formatos como WAV e AVI.
Como funcionam os arquivos RIFF
Um arquivo RIFF é um único bloco externo: o código de quatro caracteres RIFF, um tamanho de 32 bits e um tipo de forma de quatro caracteres, como WAVE ou AVI , seguidos de sub-blocos. Cada bloco contém um código de quatro caracteres, uma contagem de bytes de 32 bits e seus dados. A especificação de 1991 permite que apenas os blocos RIFF e LIST contenham outros blocos, mas formas posteriores podem definir seus próprios contêineres, como o bloco de quadro de animação ANMF do WebP. O tipo de forma determina quais blocos são obrigatórios, quais são opcionais e se a ordem deles importa. Os inteiros são little-endian; a especificação de 1991 também define uma contraparte big-endian, RIFX, mas não registrou nenhum tipo de forma RIFX. Em um pipeline de mídia, os demultiplexadores percorrem a árvore de blocos para localizar amostras, descrições de formato, índices e metadados, pulando os blocos que não reconhecem com base no tamanho declarado.
Informações essenciais
- As cargas úteis do RIFF são alinhadas a palavras: um bloco com comprimento de dados ímpar é seguido por um byte zero de preenchimento que não é contado no tamanho declarado desse bloco. Um leitor que avança apenas pelo tamanho declarado chega um byte antes do cabeçalho do próximo bloco.
- Os tamanhos são de 32 bits, portanto um arquivo RIFF simples tem um limite próximo de 4 GB, e a solução depende da forma. Para WAVE, o RF64 da EBU e seu sucessor BW64 da ITU substituem o
RIFFinicial porRF64ouBW64e acrescentam um blocods64, colocado primeiro, que armazena tamanhos de 64 bits. Quando o tamanho externo ou o tamanho do blocodatativer o valor0xFFFFFFFF, use o valor de 64 bits deds64; caso contrário, vale o valor de 32 bits. A EBU agora orienta os usuários a consultar a ITU-R BS.2088 em vez do próprio texto sobre RF64. O AVI usa as extensões OpenDML, que são separadas. A documentação do multiplexador WAV do FFmpeg alerta que o suporte a RF64 não é tão universal quanto o suporte a RIFF. - Não localize áudio ou vídeo em deslocamentos fixos. A especificação orienta os programas a esperar e ignorar blocos desconhecidos em todas as formas RIFF, e uma forma fixa apenas parte da ordem: um arquivo WAVE precisa conter um bloco de formato e um bloco de dados, com o bloco de formato primeiro, mas outros blocos podem ficar entre eles ou antes deles. Gravadores que podem posteriormente mudar para RF64 ou BW64 gravam um marcador
JUNKantes do bloco de formato, e o FFmpeg observa que esse bloco pode confundir leitores WAV simplistas. - RIFF identifica uma estrutura, não um tipo de mídia. Arquivos WAV, AVI e WebP comuns começam com
RIFF; o tipo de forma de quatro caracteres que vem após o campo de tamanho (bytes 8 a 11, contando a partir de zero),WAVE,AVIouWEBP, é o que os diferencia. Arquivos WAVE grandes que começam comRF64ouBW64mantêmWAVEnessa posição. As convenções dos blocos também podem variar conforme a forma: o WebP, por exemplo, não segue a convenção do RIFF de usar letras maiúsculas nos códigos de blocos padrão.
Quando os arquivos RIFF são importantes
Analise os blocos RIFF ao extrair metadados ou cargas úteis de mídia de arquivos compatíveis. Os leitores precisam respeitar os tamanhos e o preenchimento dos blocos, pois presumir uma ordem fixa pode causar falhas com arquivos válidos que contêm blocos opcionais ou desconhecidos.
Fontes
- IBM e Microsoft: interface de programação multimídia e especificações de dados, versão 1.0 (agosto de 1991), cópia hospedada pela Universidade McGill
- Descrição de formato fdd000025 da Biblioteca do Congresso: RIFF (Resource Interchange File Format)
- Microsoft Learn: referência de arquivos AVI RIFF
- Microsoft Learn: serviços do Resource Interchange File Format
- Recomendação ITU-R BS.2088-2 (11/2025): formato de arquivo de grande porte para o intercâmbio internacional de materiais de programas de áudio com metadados (BW64)
- EBU Tech 3306-2009 (julho de 2009): MBWF / RF64, um formato de arquivo estendido para áudio
- EBU Tech 3306 v2 (junho de 2018): RF64, um formato de arquivo estendido para áudio
- RFC 9649: formato de imagem WebP, seção 2.3 Formato de arquivo RIFF e seção 2.4 Cabeçalho de arquivo WebP
- Descrição de formato fdd000059 da Biblioteca do Congresso: formato de arquivo AVI (Audio Video Interleaved)
- Documentação de formatos do FFmpeg: opção rf64 do multiplexador wav