Was ist Demuxing?
Demuxing zerlegt einen Mediencontainer oder Transportstream in seine Video-, Audio-, Untertitel- und Metadatenstreams. Es ändert die Organisation der Streams, ohne die komprimierten Inhalte zwangsläufig zu decodieren.
So funktioniert Demuxing
Ein gemultiplexter Container verschachtelt Pakete mehrerer logischer Spuren und hält fest, wie diese Pakete zeitlich einzuordnen und zu interpretieren sind. Der Demuxer liest Containerstrukturen, wählt Spuren aus und liefert komprimierte Zugriffseinheiten samt Zusatzinformationen an die jeweiligen Decoder. Das unterscheidet sich vom Decodieren, bei dem aus diesen Einheiten Audio-Abtastwerte, Videobilder oder Untertitelereignisse entstehen. In Abläufen für Wiedergabe, Medienanalyse, Extraktion und Remuxing liegt Demuxing zwischen dem Einlesen der Bytes und der Codec-Verarbeitung.
Wichtige Fakten
- Paketzeitstempel verwenden eine Zeitbasis des Containers oder der Spur und können zwischen Decodier- und Wiedergabereihenfolge unterscheiden. Gehen diese Informationen verloren, können Spuren ihre Synchronität verlieren oder Videobilder falsch angeordnet werden.
- Eine komprimierte Spur lässt sich unter Umständen bitgenau und verlustfrei extrahieren. Als eigenständige Datei benötigt sie jedoch möglicherweise Codec-Initialisierungsdaten, die zuvor in Container-Headern statt in jedem Paket gespeichert waren.
- Beschädigte Indizes, abgeschnittene Boxen oder ungültige Paketgrößen können Zeitsprünge oder das Parsen verhindern, selbst wenn ein Großteil der codierten Mediendaten intakt ist. Ein Demuxing-Fehler bedeutet daher nicht zwangsläufig einen Codec-Fehler.
Wann Demuxing relevant ist
Nutzen Sie Demuxing, um Spuren zu extrahieren, Streameigenschaften zu untersuchen oder separate Decoder zu versorgen. Der gewählte Demuxer muss den Container verstehen und Zeitinformationen erhalten, sonst kann die Wiedergabe ihre Synchronität verlieren.