¿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

  1. 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.
  2. 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 RIFF inicial por RF64 o BW64 y añaden un bloque ds64, situado primero, que contiene tamaños de 64 bits. Cuando el tamaño exterior o el tamaño del bloque data indica 0xFFFFFFFF, usa el valor de 64 bits de ds64; 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.
  3. 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 JUNK antes del bloque de formato, y FFmpeg señala que ese bloque puede confundir a los lectores WAV demasiado simples.
  4. 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, AVI o WEBP, permite distinguirlos. Los archivos WAVE grandes que comienzan con RF64 o BW64 conservan WAVE en 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

Convierte tus conocimientos sobre multimedia en un pipeline funcional

Conecta las subidas, el procesamiento, la IA, el almacenamiento y la entrega mediante una sola API declarativa, mientras nos encargamos por ti del stack de encoding, el escalado y los cambios constantes de formatos.

Prueba Transloadit gratis