Qu’est-ce qu’un fichier RIFF ?

Resource Interchange File Format (RIFF) est une structure de conteneur composée de blocs, développée par Microsoft et IBM. Ses blocs identifiés et délimités par leur taille constituent la base de formats comme WAV et AVI.

Fonctionnement des fichiers RIFF

Un fichier RIFF est constitué d’un seul bloc externe : le code à quatre caractères RIFF, une taille sur 32 bits et un type de forme à quatre caractères comme WAVE ou AVI , suivis de sous-blocs. Chaque bloc contient un code à quatre caractères, un nombre d’octets sur 32 bits et ses données. La spécification publiée en 1991 n’autorise que les blocs RIFF et LIST à contenir d’autres blocs, mais les formes ultérieures peuvent définir leurs propres conteneurs, comme le bloc ANMF d’image d’animation de WebP. Le type de forme détermine quels blocs sont obligatoires, lesquels sont facultatifs et si leur ordre importe. Les entiers sont en petit-boutiste ; la spécification publiée en 1991 définit également un équivalent en grand-boutiste, RIFX, mais n’a enregistré aucun type de forme RIFX. Dans une chaîne de traitement multimédia, les démultiplexeurs parcourent l’arborescence des blocs pour repérer les échantillons, les descriptions de format, les index et les métadonnées, en sautant les blocs qu’ils ne reconnaissent pas selon leur taille déclarée.

Points clés

  1. Les charges utiles RIFF sont alignées sur des mots : un bloc dont la longueur des données est impaire est suivi d’un octet de remplissage nul qui n’est pas comptabilisé dans la taille déclarée de ce bloc. Un lecteur qui avance uniquement de la taille déclarée arrive un octet trop tôt sur l’en-tête du bloc suivant.
  2. Les tailles sont sur 32 bits ; un fichier RIFF simple est donc limité à environ 4 GB, et la solution dépend de la forme. Pour WAVE, le RF64 de l’EBU et son successeur BW64 de l’ITU remplacent le RIFF initial par RF64 ou BW64 et ajoutent un bloc ds64, placé en premier, qui contient des tailles sur 64 bits. Lorsque la taille externe ou celle du bloc data vaut 0xFFFFFFFF, utilisez la valeur sur 64 bits provenant du bloc ds64 ; sinon, la valeur sur 32 bits reste applicable. L’EBU renvoie désormais les utilisateurs vers ITU-R BS.2088 plutôt que vers son propre texte RF64. AVI utilise les extensions OpenDML distinctes. La documentation du multiplexeur WAV de FFmpeg avertit que la prise en charge de RF64 n’est pas aussi universelle que celle de RIFF.
  3. Ne recherchez pas l’audio ou la vidéo à des décalages fixes. La spécification demande aux programmes de s’attendre à rencontrer des blocs inconnus et de les ignorer dans chaque forme RIFF, et une forme ne fixe qu’une partie de l’ordre : un fichier WAVE doit contenir un bloc de format et un bloc de données, le bloc de format devant précéder le bloc de données, mais d’autres blocs peuvent se trouver entre eux ou avant eux. Les enregistreurs susceptibles de passer ultérieurement à RF64 ou BW64 écrivent un bloc réservé JUNK avant le bloc de format, et FFmpeg précise qu’un tel bloc peut perturber les lecteurs WAV simplistes.
  4. RIFF identifie une structure, et non un type de média. Les fichiers WAV, AVI et WebP ordinaires commencent tous par RIFF ; le type de forme à quatre caractères qui suit le champ de taille (octets 8 à 11, en comptant à partir de zéro), WAVE, AVI ou WEBP, permet de les distinguer. Les fichiers WAVE volumineux qui commencent par RF64 ou BW64 conservent WAVE à cet emplacement. Les conventions des blocs peuvent également varier selon la forme : WebP, par exemple, ne suit pas la convention RIFF des majuscules pour les codes de blocs standard.

Quand les fichiers RIFF sont importants

Analysez les blocs RIFF pour extraire des métadonnées ou des charges utiles multimédias de fichiers compatibles. Les lecteurs doivent respecter les tailles et le remplissage des blocs, car supposer un ordre fixe peut provoquer des erreurs sur des fichiers valides contenant des blocs facultatifs ou inconnus.

Références

Transformer vos connaissances sur les médias en une chaîne de traitement opérationnelle

Reliez les téléversements, le traitement, l’IA, le stockage et la diffusion via une seule API déclarative — la pile d’encodage, la montée en charge et l’évolution constante des formats sont prises en charge pour vous.

Essayer Transloadit gratuitement