MP4-Dateiformat 0.9 mit Erweiterung für Hilfstracks (MP4-AT)

Das Dateiformat MP4-AT unterstützt das Speichern von Hilfstracks, die für die Bearbeitung und Komposition nach der Aufnahme nützlich sind (z. B. ein Videotrack mit Tiefenkarte), zusammen mit abspielbaren Mediendaten in einer ISOBMFF/MP4-Struktur.

Ziel des Formats ist es, Hilfstracks so zu speichern, dass sie für Clients, die diese Spezifikation nicht implementieren, ausgeblendet werden. So wird verhindert, dass Clients Hilfstracks als abspielbare Daten interpretieren.

Abhängigkeiten

Die folgenden normativen Verweise gelten für diese Spezifikation:

Einführung

Die Verwendung von „MUSS“, „DARF NICHT“, „ERFORDERLICH“, „SOLLTE“, „SOLLTE NICHT“, „EMPFOHLEN“, „KÖNNEN“ und „OPTIONAL“ erfolgt gemäß dem IETF-Standard, der in RFC2119 definiert ist.

MP4-AT-Dateiformat

Das Dateiformat MP4-AT besteht aus primären und Hilfsspuren, die verschiedene Bearbeitungsvorgänge ermöglichen. Die primären Tracks (z. B. ein Videotrack, auf den ein Bokeh-Effekt angewendet wurde) werden wie gewohnt in die MP4-Datei geschrieben, während die Hilfstracks in eine MP4-Datei mit Hilfstracks geschrieben werden. Auxiliary Tracks MP4 ist ein weiterer MP4-kompatibler Container und wird im Feld axte(Auxiliary Tracks Extension) platziert. Das Feld axte sollte das letzte Feld in der Datei sein. So können Sie Hilfsdaten ganz einfach entfernen, indem Sie die Datei kürzen.

Dieses Format ist abwärtskompatibel: Bei Wiedergabegeräten, die den Rest dieses Formats nicht unterstützen, werden beim Laden der Datei die primären Videotracks gelesen und abgespielt.

Liniendiagramm, das die Anordnung der Elemente in einer MP4-AT-Datei veranschaulicht

Die Datei enthält ein moov.meta-Feld mit einem mdta-Handler, der die folgenden Metadaten enthält. Die Metadaten können in beliebiger Reihenfolge angezeigt werden.

Metadatenschlüssel

Typ-Indikator

Wert

auxiliary.tracks.offset

78 (vorzeichenlose 64‑Bit-Big-Endian-Ganzzahl)

Der Dateioffset (in Byte) des Felds axte

auxiliary.tracks.length

78 (vorzeichenlose 64‑Bit-Big-Endian-Ganzzahl)

Die Länge (in Byte) des axte-Felds

Feld für die Erweiterung von Hilfsgleisen (axte)

Syntax

Das Feld axte wird anhand der Semantik des Felds beschrieben, das in ISO/IEC 14496-12:2022: 4.2 definiert ist.

aligned(8) class AuxiliaryTracksExtensionBox extends Box('axte') {
  bit(8) data[];
}

wobei das Datenfeld die MP4-Datei mit den Zusatztracks enthält.

Nutzlast

Die Nutzlast des Felds axte ist eine MP4-Datei mit Hilfstracks. Die MP4-Datei mit den Zusatztracks hat die übliche MP4-Struktur.

Liniendiagramm, das die Anordnung der Elemente in den Hilfstracks des MP4-Streams veranschaulicht

Die MP4-Datei mit den Zusatztracks enthält Beispielmetadaten für alle Zusatztracks. Alle Nutzlasten von Hilfstracks müssen entweder im Feld mdat der MP4-Datei für Hilfstracks oder im Feld mdat der äußeren MP4-Datei gespeichert werden (aber nicht in beiden).

Im ersten Fall muss auxiliary.tracks.interleaved auf 0 gesetzt werden (siehe unten unter „Statische Metadaten“). Die Sample-Offset-Werte im Feld axte.moov beziehen sich auf den Beginn der MP4-Datei mit den Hilfstracks. Dadurch ist die MP4-Datei mit den Zusatztracks in sich geschlossen. Das bedeutet, dass sie ohne Verweise auf die äußere MP4-Datei gelesen werden kann.

Im letzteren Fall muss auxiliary.tracks.interleaved auf 1 gesetzt sein (siehe unten unter „Statische Metadaten“). Die Sample-Offset-Werte im Feld axte.moov beziehen sich auf den Anfang der Datei und die Sample-Nutzlast der primären und der Hilfstracks kann interleaved sein. In diesem Fall kann das Feld axte.mdat fehlen.

Statische Metadaten

Die MP4-Datei mit den Zusatztracks enthält ein moov.meta-Feld mit einem mdta-Handler, der die folgenden Metadaten enthält. Die Metadaten können in beliebiger Reihenfolge angezeigt werden.

Metadatenschlüssel

Typ-Indikator

Wert

Optional: auxiliary.tracks.interleaved

75 (vorzeichenlose 8-Bit-Ganzzahl)

0: Gibt an, dass die Samples nicht interleaved sind und sich im Feld axte.mdat befinden

1: Gibt an, dass Samples im Feld mdat des primären Videotracks interleaved sind

Alle anderen Werte sind reserviert und dürfen nicht verwendet werden.

Fehlen diese Metadaten, gilt der Standardwert 0.

auxiliary.tracks.map

0 (reserviert)

Binäres Format:

  • 1-Byte-Version = 1
  • 1 Byte – Track-Anzahl = n
  • n Byte-Tracktypen aus der folgenden Gruppe
    • 0 = Scharfes Video
    • 1 = Tiefenvideo (linear)
    • 2 = Tiefenvideo (invertiert)
    • 3 = Zeitlich abgestimmte Tiefenmetadaten
    • 4 = Durchsichtiges Video
    • 5–127 = Reserviert für zukünftige Verwendung
    • 128–255 = Benutzerdefinierte Tracktypen

Die Reihenfolge der Titeltypen in auxiliary.tracks.map gibt ihre Reihenfolge in der Nutzlast der MP4-Datei mit Hilfstiteln an.

Zusatz-Track-Typen

Die MP4-Datei mit den zusätzlichen Tracks kann die folgenden Video- und Metadatentracks enthalten, die für die Bearbeitung nützlich sind.

Scharfer Videotrack

Ein Video in voller Auflösung ohne anwendbare Bearbeitungseffekte. Der Videotrack kann in einer anderen Auflösung als der primäre Videotrack gespeichert werden. Für den scharfen Videotrack kann jeder gängige Videocodec verwendet werden. Er kann im Standard- oder im High Dynamic Range-Format vorliegen.

Tiefenvideotrack

Der Tiefe-Videotrack enthält die Tiefeninformationen, die als standardmäßiges Graustufenvideo codiert sind. So können Tiefentracks auf Geräten decodiert und codiert werden, die keine spezielle Dekodierungs- oder Codierungsunterstützung für die Tiefe haben. Für den Tiefe-Videotrack können H.264/AVC, H.265/HEVC, VP9, AV1 oder ein anderer gängiger Videocodec verwendet werden. Der Tiefe-Videotrack kann 8- oder 10-Bit sein und linear oder invers codiert werden (siehe Dynamic Depth 1.0-Spezifikation).

Track mit Zeitcodierten Tiefenmetadaten

Der Zeitcodierte Metadaten-Track für die Tiefenschärfe enthält Normalisierungswerte zur Berechnung der Tiefenschärfe und eine Brennebenentabelle, mit der der Unschärferadius für einen Bokeh-Effekt berechnet werden kann.

Beispiel für einen MIME-Typ

application/x-depth-metadata

Beispielsyntax

Binärformat (alle Ganzzahlen im Little-Endian-Format):

  • Nähe (16-Bit-Float)
  • Weit entfernt (16-Bit-Float)
  • Anzahl der Einträge in der Fokustabelle (16-Bit-Ganzzahl)
  • Eintrag in der Fokustabelle
    • Einfahrtsabstand (16-Bit-Float)
    • Radius des Eintrags (16-Bit-Gleitkommazahl)
Transparenter Videotrack

Ein Videotrack, der den Alphawert (Transparenz) für jedes Pixel im entsprechenden Frame speichert. Ein Mindestwert steht für vollständig transparent, während der Maximalwert für volle Deckkraft steht. Werte dazwischen stehen für unterschiedliche Transparenzgrade auf einer linearen Skala. Beim Compositing wird der normale Mischmodus mit nicht vormultiplizierten Farbwerten verwendet. Ähnlich wie der Tiefe-Videotrack sollte dieser Track auch als Standard-Graustufenvideo codiert werden.

Beispielanwendungsfälle

  • Ein abspielbares gerendertes Bokeh-Video in einem primären Track speichern, mit zusätzlichen Videotracks für die scharfen Farbdaten des Originals (vor dem Weichzeichnen) und eine Tiefenkarte sowie einen zusätzlichen getakteten Metadatentrack mit Tiefenmetadaten, die den Fokuspunkt in jedem Frame widerspiegeln. Die Hilfstracks können dann in einem Video-Editor verwendet werden, um das Motiv im Fokus zu ändern und einen hochwertigen Bokeh-Videotrack neu zu rendern.

  • Speichern eines vorab gerenderten, durchsichtigen „Sticker“-Videos, z. B. eines animierten Emoji-Videos auf weißem Hintergrund in einem primären Videotrack mit einem Hilfsvideotrack, der eine Alpha-Map enthält. Der Hilfstrack kann dann von einem Compositor verwendet werden, um den Sticker mithilfe von Transluzenzinformationen aus dem Hilfstrack in einen Hintergrund einzufügen.