
Einführung in die MP4-Box

Eine Box besteht aus zwei Teilen: dem Boxkopf und dem Boxkörper.
![]()
Box-Header: die Box-Metadaten, wie z. B. Typ und Größe der Box.
Rahmenkörper: Der Datenteil des Rahmens, der tatsächlich gespeicherte Inhalt bezieht sich auf den Rahmentyp, wie z. B. die im Körperteil von mdat gespeicherten Mediendaten.
Im Feldkopf sind nur Typ und Größe Pflichtfelder. Bei size==0 gibt es ein großes Feld. In manchen Boxen gibt es auch Versionsfelder und Flags, diese Boxen werden Full Boxes genannt. Wenn andere Boxen in den Körper der Box verschachtelt sind, wird die Box als Umfassungsbox bezeichnet.
Box-Kopfzeile
Die Felder sind wie folgt definiert:
Typ: Rahmentyp, einschließlich “Standardtyp” und “benutzerdefinierter Erweiterungstyp”, der 4 Bytes belegt;
Vordefinierte Typen: wie ftyp, moov, mdat und andere vordefinierte Typen;
Benutzerdefinierter Erweiterungstyp: Wenn type==uuid, bedeutet dies, dass es sich um einen benutzerdefinierten Erweiterungstyp handelt. size (oder large size) gefolgt von 16 Bytes, dem Wert des benutzerdefinierten Typs (extended_type)
size – Die Größe des gesamten Frames, einschließlich des Frame-Headers, in Byte. Wenn die Größe 0 oder 1 ist, ist eine besondere Handhabung erforderlich:
Größe gleich 0: Die Größe des Frames wird durch die nachfolgende Größe L bestimmt (im Allgemeinen verwendet nur der mdat-Frame, der Mediendaten lädt, die Größe L);
Größe gleich 1: der aktuelle Frame ist der letzte Frame in der Datei, der normalerweise im mdat-Frame enthalten ist;
largesize: die Größe der Box, belegt 8 Bytes;
extended_type: Typ der benutzerdefinierten Erweiterung, die 16 Bytes belegt;
Der Box-Pseudocode lautet wie folgt:
aligned(8) class Box (unsigned int(32) boxtype, optional unsigned int(8)[16] extended_type) {
unsigned int (32) Größe;
unsigned int(32) type = boxtype;
wenn (Größe==1) {
unsigned int(64) largesize;
} Sonst wenn (Größe==0) {
// Box reicht bis zum Ende der Datei
}
if (boxtype==’uuid’) {
unsigned int(8)[16] Benutzertyp = erweiterter_Typ;
}
}
Kastenaufbau
Der Datenkörper der Tabelle, verschiedene Tabellen enthalten unterschiedliche Inhalte, Sie müssen sich auf die Definition der jeweiligen Tabelle beziehen. Einige Kofferaufbauten sind sehr einfach, wie ftyp. Einige Boxen sind komplexer und können andere verschachtelte Boxen haben, wie z. B. moov.
Box gegen volle Box
Basierend auf Box wird der Typ FullBox erweitert. Im Vergleich zu Box hat FullBox mehr Versionsfelder und Flags.
Version: Die Version der aktuellen, erweiterbaren Box belegt 1 Byte;
Flags: Flag-Bits, die 24 Bits belegen, die Bedeutung wird durch die spezifische Box selbst definiert;


