¿Qué es un archivo RIFF?
Resource Interchange File Format (RIFF) es una estructura de contenedor basada en bloques desarrollada por Microsoft e IBM. Sus bloques etiquetados y delimitados por tamaño constituyen la base de formatos como WAV y AVI.
Cómo funcionan los archivos RIFF
Un archivo RIFF consta de un único bloque exterior: el código de cuatro caracteres RIFF, un tamaño de 32 bits y un tipo de formato de cuatro caracteres como WAVE o AVI , seguido de subbloques. Cada bloque contiene un código de cuatro caracteres, un recuento de bytes de 32 bits y sus datos. La especificación de 1991 solo permite que los bloques RIFF y LIST contengan otros bloques, pero los formatos posteriores pueden definir sus propios contenedores, como el bloque ANMF de fotograma de animación de WebP. El tipo de formato determina qué bloques son obligatorios, cuáles son opcionales y si su orden importa. Los enteros son little-endian; la especificación de 1991 también define un equivalente big-endian, RIFX, pero no registró ningún tipo de formato RIFX. En un pipeline multimedia, los demultiplexores recorren el árbol de bloques para localizar muestras, descripciones de formato, índices y metadatos, y omiten los bloques que no reconocen según su tamaño declarado.
Datos clave
- Las cargas útiles de RIFF se alinean a límites de palabra: un bloque con una longitud de datos impar va seguido de un byte de relleno con valor cero que no se cuenta en el tamaño declarado de ese bloque. Un lector que avanza solo según el tamaño declarado llega un byte antes del encabezado del siguiente bloque.
- Los tamaños son de 32 bits, por lo que un archivo RIFF convencional alcanza un máximo cercano a 4 GB, y la solución depende del formato. Para WAVE, RF64 de la EBU y su sucesor de la ITU, BW64, sustituyen el
RIFFinicial porRF64oBW64y añaden un bloqueds64, situado primero, que contiene tamaños de 64 bits. Cuando el tamaño exterior o el tamaño del bloquedataindica0xFFFFFFFF, usa el valor de 64 bits deds64; en caso contrario, se mantiene el valor de 32 bits. La EBU ahora remite a los usuarios a ITU-R BS.2088 en lugar de a su propio texto sobre RF64. AVI usa las extensiones independientes OpenDML. La documentación del multiplexor WAV de FFmpeg advierte que la compatibilidad con RF64 no es tan universal como con RIFF. - No busques el audio o el video en posiciones fijas. La especificación indica que los programas deben prever e ignorar bloques desconocidos en todos los formatos RIFF, y cada formato solo fija parte del orden: un archivo WAVE debe contener un bloque de formato y un bloque de datos, con el bloque de formato primero, pero puede haber otros bloques entre ellos o antes de ambos. Las grabadoras que pueden pasar más adelante a RF64 o BW64 escriben un marcador
JUNKantes del bloque de formato, y FFmpeg señala que ese bloque puede confundir a los lectores WAV demasiado simples. - RIFF identifica una estructura, no un tipo de contenido multimedia. Los archivos WAV, AVI y WebP convencionales comienzan todos con
RIFF; el tipo de formato de cuatro caracteres que sigue al campo de tamaño (bytes del 8 al 11, contando desde cero),WAVE,AVIoWEBP, permite distinguirlos. Los archivos WAVE grandes que comienzan conRF64oBW64conservanWAVEen esa posición. Las convenciones de los bloques también pueden variar según el formato: WebP, por ejemplo, no sigue la convención de RIFF de usar mayúsculas para los códigos de bloques estándar.
Cuándo importan los archivos RIFF
Analiza los bloques RIFF al extraer metadatos o cargas útiles multimedia de archivos compatibles. Los lectores deben respetar los tamaños y el relleno de los bloques, porque asumir un orden fijo puede provocar fallos con archivos válidos que contienen bloques opcionales o desconocidos.
Fuentes
- IBM y Microsoft: interfaz de programación multimedia y especificaciones de datos, versión 1.0 (agosto de 1991), copia alojada por la Universidad McGill
- Descripción de formato fdd000025 de la Biblioteca del Congreso: RIFF (Resource Interchange File Format)
- Microsoft Learn: referencia de archivos AVI RIFF
- Microsoft Learn: servicios de Resource Interchange File Format
- Recomendación ITU-R BS.2088-2 (11/2025): formato de archivo de larga duración para el intercambio internacional de materiales de programas de audio con metadatos (BW64)
- EBU Tech 3306-2009 (julio de 2009): MBWF / RF64, un formato de archivo ampliado para audio
- EBU Tech 3306 v2 (junio de 2018): RF64, un formato de archivo ampliado para audio
- RFC 9649: formato de imagen WebP, sección 2.3 sobre el formato de archivo RIFF y sección 2.4 sobre el encabezado de archivo WebP
- Descripción de formato fdd000059 de la Biblioteca del Congreso: formato de archivo AVI (Audio Video Interleaved)
- Documentación de formatos de FFmpeg: opción rf64 del multiplexor wav