Was ist eine DivX-Datei?
Eine DivX-Datei enthält Video, das mit einem DivX-Codec codiert wurde, häufig mit MPEG-4 Teil 2 oder einer späteren DivX-Variante. Der codierte Stream wird oft in einem AVI- oder MKV-Container gespeichert, statt in einem Container, der ausschließlich für DivX bestimmt ist.
So funktionieren DivX-Dateien
DivX ist eine Marke, die mehrere Codec-Generationen und Geräteprofile umfasst, keine einzelne Dateistruktur. DivX 3 basierte auf dem Codec MPEG-4 v3 von Microsoft, den Decoder als eigenständigen Codec getrennt vom Standard MPEG-4 Teil 2 behandeln. Der Encoder DivX 5 ist als Implementierung von MPEG-4 Teil 2 dokumentiert (Simple und Advanced Simple Profile). Laut DivX verwendeten die Versionen 3 bis 6 AVI als Container. DivX 6 führte das DivX Media Format ein, das die Dateiendung .divx verwendet und XSUB-Untertitel, Menüs, Kapitelmarken und alternative Audiospuren ergänzt. Spätere Generationen änderten beide Ebenen: DivX beschreibt DivX-Plus-Video als auf H.264 basierend und verwendet MKV für DivX-Plus- und DivX-HEVC-Video. Welchen Decoder eine Datei benötigt, ergibt sich daher aus ihrem Stream, während der Container Zeitinformationen und Spuranordnung liefert.
Wichtige Fakten
- Als DivX gekennzeichnete AVI-Dateien benötigen nicht alle denselben Decoder. FFmpeg ordnet die FourCCs
DIVXundDX50seinem Decoder für MPEG-4 Teil 2 zu. Dagegen ordnet esDIV3,DIV4,DIV5undDIV6dem Decodermsmpeg4v3zu, der Variante MPEG-4 v3 von Microsoft, auf der DivX 3 basierte. Der FourCC ist nur eine Kennzeichnung im Stream-Header, und die Tabelle von FFmpeg enthält auch Einträge für fehlerhafte AVI-Dateien. Bestätigen Sie den Codec daher durch Decodieren einer Probe, statt nur die Kennzeichnung auszulesen. - Das Kopieren eines DivX-Videostreams aus AVI ohne erneutes Encoding kann eine Datei erzeugen, die Standarddecoder ablehnen. FFmpeg dokumentiert gepackte B-Frames im DivX-Stil als nicht gültiges MPEG-4 und warnt vor Problemen beim Kopieren in MP4 oder MPEG-PS/TS. Sein Decoder für MPEG-4 protokolliert beim Auftreten solcher Frames eine Meldung und empfiehlt den Bitstream-Filter
mpeg4_unpack_bframes„without encoding but stream copy“: Der Filter korrigiert den Stream während des Kopierens. Das dokumentierte Beispiel von FFmpeg kopiert dabei von einer AVI-Datei in eine andere. Ein erneutes Encoding benötigt den Filter nicht, weil der Decoder gepackte B-Frames selbst verarbeitet. - Nicht jeder Stream aus der DivX-Ära lässt sich mit FFmpeg ohne erneutes Encoding in MP4 kopieren. Die Codec-Tag-Tabelle seines MP4-Muxers enthält Einträge für MPEG-4 Teil 2, H.264 und HEVC, jedoch keine für
msmpeg4v3oder XSUB-Untertitel. Fehlt ein Tag für den Codec eines Streams, bricht der Muxer mit einem Fehler ab. Video, das alsmsmpeg4v3decodiert wird, muss daher erneut codiert werden, um in eine von FFmpeg geschriebene MP4-Datei zu gelangen. XSUB-Untertitel lassen sich nicht mitkopieren. - Die Dateiendung identifiziert den Codec nicht und deutet den Container nur an, ohne ihn zu bestätigen. Laut DivX basieren Dateien mit der Endung
.divxauf dem AVI-Container, und.mkvist die Matroska-Endung. Die Profiltabelle führt.aviund.divxfür Profile aus der Ära von MPEG-4 sowie.mkv,.aviund.divxfür DivX Plus HD auf. Ein Filter für.divxübersieht daher DivX-Video, das als.avioder.mkvgespeichert ist. Keine Dateiendung klärt abschließend, welcher Codec enthalten ist. - Dass eine Datei per Software decodiert werden kann, bedeutet nicht, dass ein DivX-Certified-Gerät sie wiedergibt. Die Profiltabelle legt für jede Geräteklasse eigene Obergrenzen für Bildgröße, Bitrate, Anzahl der B-Frames und Quantisierungsmethode fest: Das Home-Theater-Profil nennt beispielsweise Quantisierung nach H.263 und einen B-Frame, während DivX HD 1080p zwei B-Frames und Quantisierung nach H.263, MPEG oder einem benutzerdefinierten Verfahren aufführt.
Wann DivX-Dateien relevant sind
Unterstützen Sie DivX, wenn Sie ältere Videosammlungen verarbeiten oder für neuere Wiedergabeumgebungen konvertieren. Ermitteln Sie sowohl Codec als auch Container, da die Dateiendung allein möglicherweise nicht erkennen lässt, welcher Decoder oder Demuxer benötigt wird.
So hilft Transloadit bei DivX-Dateien
Transloadits Videocodec-Referenz, die auf FFmpeg basierende Robots wie /video/encode abdeckt, führt mpeg4 (MPEG-4 Teil 2, mit Encodern wie mpeg4 und libxvid) sowie msmpeg4v3 als lesbar und schreibbar auf. Dies sind die beiden Codecs, denen FFmpeg die obigen FourCCs zuordnet.
Die Referenz führt Codecs auf. Sie deckt keine Funktionen des DivX Media Format wie Menüs oder XSUB-Untertitel ab. Testen Sie daher Dateien, die darauf angewiesen sind.
Entdecken Sie Transloadits Möglichkeiten für Dateiformate & Komprimierung
Quellen
- DivX: Technische Spezifikationen der DivX-Profile (Dateiendungen, Codecs und Grenzen pro Profil)
- DivX-Technologieglossar: AVI (Container für DivX-Video der Versionen 3 bis 6)
- DivX-Technologieglossar: MKV (Container für DivX-Plus-Video und DivX-HEVC-Video)
- DivX-Technologieglossar: H.264 (Grundlage von DivX-Plus-Video)
- DivX-Pressemitteilung vom 15. Juni 2005: DivX 6 führt das DivX Media Format ein
- Benutzerhandbuch für DivX 10 (PDF): .divx-Dateien und der AVI-Container
- Formatbeschreibung fdd000069 der Library of Congress: DivX-Videocodec, Version 5
- FFmpeg-Quellcode, libavformat/riff.c: Zuordnung von FourCC zu Codecs
- FFmpeg-Dokumentation zu Bitstream-Filtern: mpeg4_unpack_bframes
- FFmpeg-Quellcode, libavcodec/mpeg4videodec.c: Behandlung gepackter B-Frames und zugehörige Meldung
- FFmpeg-Quellcode, libavformat/movenc.c: Codec-Tags des MP4-Muxers