Was ist eine RIFF-Datei?
Resource Interchange File Format (RIFF) ist eine von Microsoft und IBM entwickelte Containerstruktur auf Chunk-Basis. Ihre gekennzeichneten, durch Größenangaben abgegrenzten Chunks bilden die Grundlage von Formaten wie WAV und AVI.
So funktionieren RIFF-Dateien
Eine RIFF-Datei besteht aus einem einzigen äußeren Chunk: dem Vierzeichencode RIFF, einer Größenangabe mit 32 Bit und einem vierstelligen Formtyp wie WAVE oder AVI , gefolgt von Unterchunks. Jeder Chunk enthält einen Vierzeichencode, eine Byteanzahl mit 32 Bit und seine Daten. Die Spezifikation von 1991 erlaubt nur Chunks mit den Codes RIFF und LIST, andere Chunks zu enthalten. Spätere Formen können jedoch eigene Container definieren, etwa den Animationsbild-Chunk von WebP mit dem Code ANMF. Der Formtyp bestimmt, welche Chunks erforderlich oder optional sind und ob ihre Reihenfolge relevant ist. Ganzzahlen werden im Little-Endian-Format gespeichert. Die Spezifikation von 1991 definiert auch ein Big-Endian-Gegenstück namens RIFX, registrierte jedoch keine RIFX-Formtypen. In einer Medienpipeline durchlaufen Demuxer den Chunk-Baum, um Abtastwerte, Formatbeschreibungen, Indizes und Metadaten zu finden. Unbekannte Chunks überspringen sie anhand ihrer deklarierten Größe.
Wichtige Fakten
- RIFF-Nutzdaten sind wortausgerichtet: Auf einen Chunk mit ungerader Datenlänge folgt ein Nullbyte zur Auffüllung, das nicht zur deklarierten Größe dieses Chunks zählt. Ein Leseprogramm, das nur um die deklarierte Größe weiterrückt, erreicht den nächsten Chunk-Header ein Byte zu früh.
- Größenangaben haben 32 Bit, daher liegt die Obergrenze einer einfachen RIFF-Datei bei etwa 4 GB. Die Lösung hängt von der Form ab. Für WAVE ersetzen RF64 der EBU und dessen ITU-Nachfolger BW64 das führende
RIFFdurchRF64oderBW64und fügen als ersten Chunkds64mit Größenangaben von 64 Bit hinzu. Wenn die äußere Größenangabe oder die Größe des Chunks mit dem Codedataden Wert0xFFFFFFFFhat, verwenden Sie den Wert mit 64 Bit ausds64; andernfalls gilt der Wert mit 32 Bit. Die EBU verweist Nutzer inzwischen auf ITU-R BS.2088 statt auf ihren eigenen RF64-Text. AVI verwendet die separaten OpenDML-Erweiterungen. Die Dokumentation zum WAV-Muxer von FFmpeg warnt, dass RF64 nicht so universell unterstützt wird wie RIFF. - Suchen Sie Audio- oder Videodaten nicht an festen Offsets. Laut Spezifikation müssen Programme in jeder RIFF-Form mit unbekannten Chunks rechnen und sie ignorieren. Eine Form legt nur einen Teil der Reihenfolge fest: Eine WAVE-Datei muss einen Format-Chunk und einen Daten-Chunk enthalten, wobei der Format-Chunk zuerst kommt. Andere Chunks können jedoch dazwischen oder davor stehen. Aufnahmeprogramme, die später möglicherweise zu RF64 oder BW64 wechseln, schreiben vor dem Format-Chunk einen Platzhalter mit dem Code
JUNK. FFmpeg weist darauf hin, dass ein solcher Chunk einfache WAV-Leseprogramme verwirren kann. - RIFF kennzeichnet eine Struktur, keinen Medientyp. Gewöhnliche WAV-, AVI- und WebP-Dateien beginnen alle mit
RIFF. Der vierstellige Formtyp nach dem Größenfeld (Bytes 8 bis 11, ab null gezählt), alsoWAVE,AVIoderWEBP, unterscheidet sie voneinander. Große WAVE-Dateien, die mitRF64oderBW64beginnen, behaltenWAVEan dieser Position bei. Auch Chunk-Konventionen können je nach Form abweichen: WebP folgt beispielsweise nicht der RIFF-Konvention, Standard-Chunk-Codes großzuschreiben.
Wann RIFF-Dateien wichtig sind
Parsen Sie RIFF-Chunks, wenn Sie Metadaten oder Mediennutzdaten aus kompatiblen Dateien extrahieren. Leseprogramme müssen Chunk-Größen und Auffüllbytes berücksichtigen, da die Annahme einer festen Reihenfolge bei gültigen Dateien mit optionalen oder unbekannten Chunks zu Fehlern führen kann.
Quellen
- IBM und Microsoft: Multimedia-Programmierschnittstelle und Datenspezifikationen, Version 1.0 (August 1991), Kopie bei der McGill University
- Formatbeschreibung fdd000025 der Library of Congress: RIFF (Resource Interchange File Format)
- Microsoft Learn: Referenz zu AVI-RIFF-Dateien
- Microsoft Learn: Dienste für das Resource Interchange File Format
- Empfehlung ITU-R BS.2088-2 (11/2025): Langformat-Dateiformat für den internationalen Austausch von Audioprogrammmaterial mit Metadaten (BW64)
- EBU Tech 3306-2009 (Juli 2009): MBWF / RF64, ein erweitertes Dateiformat für Audio
- EBU Tech 3306 v2 (Juni 2018): RF64, ein erweitertes Dateiformat für Audio
- RFC 9649: WebP-Bildformat, Abschnitt 2.3 RIFF-Dateiformat und Abschnitt 2.4 WebP-Dateiheader
- Formatbeschreibung fdd000059 der Library of Congress: AVI-Dateiformat (Audio Video Interleaved)
- FFmpeg-Formatdokumentation: Option rf64 des Muxers wav