Foto mit Bewegtbild 1.0

Fotos mit Bewegtbild sind einzelne Dateien, die ein unbewegtes Foto und ein Foto kurzes Video mit Audioaufnahme Mit dieser Art von Medien können Nutzende ein hochauflösendes Standbild sowie Video und Ton ansehen, um Stimmung und Atmosphäre, in der das Bild aufgenommen wurde.

Abhängigkeiten

Im Folgenden finden Sie normative Referenzen für diese Spezifikation:

Einführung

Die Verwendung von "MUSS", "DARF NICHT", "ERFORDERLICH", "SOLLTE" „Sollte nicht“, „EMPFOHLEN“, „KANN“ und „OPTIONAL“ entspricht dem IETF-Standard die in RFC 2119 definiert sind.

Foto mit Bewegtbild

Dateien mit Bewegtbild bestehen aus einem primären Bild, JPEG, HEIC oder AVIF mit einem sekundäre Videodatei. Das Hauptbild enthält Kamera-XMP. Metadaten beschreiben, wie die Inhalte der Standbilder und Videodateien angezeigt werden, und Container-XMP-Metadaten, die beschreiben, wie der Inhalt der Videodatei gefunden wird.

Die Bilddatei kann eine Verstärkungskarte enthalten, wie es bei Ultra HDR-JPEGs der Fall ist.

Dateinamenmuster

Autoren sollten einen Dateinamen verwenden, der dem folgenden regulären Ausdruck entspricht:

^([^\\s\\/\\\\][^\\/\\\\]*MP)\\.(JPG|jpg|JPEG|jpeg|HEIC|heic|AVIF|avif)

Leser können die XMP-Metadaten, die angehängte Videodatei oder das Video ignorieren. wenn das Muster nicht befolgt wird.

Codierung von Mediendaten

Das primäre Image enthält ein XMP-Containerelement. Metadatenverzeichnis, in dem die Reihenfolge und Eigenschaften der nachfolgenden Medien definiert werden im Dateicontainer. Jede Datei im Container hat ein entsprechendes Medium. im Verzeichnis gespeichert. Im Medienelement wird der Speicherort in der Datei beschrieben. -Container und die grundlegenden Eigenschaften jeder verketteten Datei.

XMP-Attribute

Es werden zwei Sätze von XMP-Metadaten verwendet, um die zusätzlichen semantischen Informationen für das Format „Foto mit Bewegtbild“. Die Metadaten können in beliebiger Reihenfolge angegeben werden.

Kamera-Metadaten

Kamerametadaten codieren Informationen darüber, wie das Hauptbild und des Fotos mit Bewegtbild.

  • Der Namespace-URI lautet http://ns.google.com/photos/1.0/camera/
  • Das Standard-Namespace-Präfix ist Camera

Die folgenden Attribute können in den XMP-Metadaten der Standbilddatei erscheinen:

Name

Typ

Beschreibung

Camera:MicroVideo

Camera:MicroVideoVersion

Camera:MicroVideoOffset

Camera:MicroVideoPresentation
TimestampUs

Diese Eigenschaften waren Teil der Microvideo V1-Spezifikation. Sie werden in dieser Spezifikation gelöscht und müssen gegebenenfalls ignoriert werden.

Insbesondere wird das Attribut MicroVideoOffset durch den Wert GContainer:ItemLength ersetzt, mit dem die Videodaten in der Datei gefunden werden.

Camera:MotionPhoto

Integer

0: Gibt an, dass die Datei nicht als Foto mit Bewegtbild behandelt werden soll.

1: Gibt an, dass die Datei als Foto mit Bewegtbild behandelt werden soll.

Alle anderen Werte sind nicht definiert und werden entsprechend behandelt.

Wenn der Wert null oder negativ ist, wird die Datei immer als auch dann, wenn tatsächlich ein Video an die Datei angehängt ist.

Da XMP von den meisten sachkundigen Editoren übernommen wird, kann immer noch einen Restwert von 1 für dieses Feld haben, obwohl die angehängten Video entfernt wurde. Dieses Feld ist daher nicht endgültig und Leser immer bestätigen, dass ein Video vorhanden ist.

Camera:MotionPhotoVersion

Integer

Gibt das Dateiformat des Fotos mit Bewegtbild an. Diese Spezifikation definiert Version „1“.

Camera:MotionPhotoPresentationTimestampUs

Long

Long-Wert, der den Präsentationszeitstempel (in Mikrosekunden) des Videoframes angibt, der dem Standbild entspricht. Der Wert kann -1 sein, wenn er nicht festgelegt oder nicht angegeben werden soll.

Präsentationsverhalten

Wenn Camera:MotionPhotoPresentationTimestampUs nicht im XMP-Paket vorhanden ist, Leser sollten einen Präsentationszeitstempel verwenden, der unmittelbar vor dem Zeitstempel steht der Mitte des Videotracks am nächsten sind, d.h. der Länge des Videotracks geteilt durch 2.

Wenn Camera:MotionPhotoPresentationTimestampUs im XMP-Paket vorhanden ist und "application/motionphoto-image-meta" ist im Video vorhanden, dasselbe Wert muss in primaryImageFrameScoreDescr presentationTimestampUs enthalten sein dieses Titels. Wenn Camera:MotionPhotoPresentationTimestampUs nicht im XMP-Paket und der Metadatentrack vorhanden ist, muss der Metadaten-Track -1 sein.

Container element

Das Containerelement wird in den XMP-Metadaten des primären Bildes und definiert das Verzeichnis der Medienelemente im Container. Medienelemente müssen in derselben Reihenfolge wie die Medienelementelemente in der Containerdatei und muss eng gepackt sein.

  • Der Namespace-URI lautet http://ns.google.com/photos/1.0/container/
  • Das Standard-Namespace-Präfix ist Container

Das Verzeichnis darf nur ein primäres Bildelement enthalten und es muss das erste Element sein im Verzeichnis gespeichert.

Elementname

Typ

Beschreibung

Directory

Geordnetes Array von Strukturen

Geordnetes Array von Container:Item-Strukturen, die das Layout und die des Containers enthält.

Elementelement

Medienelemente beschreiben, wie jedes Element von der Anwendung verwendet werden soll.

  • Der Namespace-URI lautet http://ns.google.com/photos/1.0/container/item/
  • Das Standard-Namespace-Präfix ist Item

Das erste Medienelement muss das primäre Bild sein. Er muss einen Mime enthalten. Attribut, das einen der unter „Element-MIME-Typ“ aufgeführten Bild-MIME-Typen angibt Werte. Die Länge des primären Elements kann durch Parsen des primären Elements bestimmt werden. basierend auf seinem MIME-Typ, beginnend am Anfang des Dateicontainers.

Das erste Medienelement kann ein Padding-Attribut enthalten, das zusätzliche Abstand zwischen dem Ende des codierten primären Bildes und dem Anfang des nächsten Medienelements. Nur das erste Medienelement darf ein Padding-Attribut enthalten.

Jedes Medienelement muss ein Mime-Attribut enthalten. Die sekundären Medienelemente müssen enthalten auch Längenattribute.

Aufeinanderfolgende Medienelemente teilen möglicherweise Ressourcendaten innerhalb des Dateicontainers. Die bestimmt das erste Medienelement den Speicherort der Ressource im Dateicontainer. und nachfolgenden freigegebenen Medienelementen ist Length auf 0 gesetzt, falls das Ressourcendaten selbst ein Container.

Der Standort der Medienelementressourcen im Container wird durch Addition der Werte die Length-Werte der vorherigen sekundären Artikelressourcen auf die Länge von die primäre Bildcodierung plus Padding, falls angegeben.

Attributname

Typ

Beschreibung

Mime

String

Erforderliche Angabe. Einfacher String, der den MIME-Typ des Medienelements im Container angibt.

Semantic

String

Erforderliche Angabe. Einfacher String, der die anwendungsspezifische Bedeutung des Medienelements angibt. Die Definition finden Sie im Abschnitt zu den semantischen Werten.

Length

Integer

Erforderlich für sekundäre Medienelemente, einschließlich des Videocontainers. Die positive Ganzzahllänge des Elements in Byte. Medienelemente müssen in ihrer ursprünglichen Form ohne Codierung vorliegen. Der Längenwert ist die tatsächliche Länge der Byte in der Datei.

Die Länge 0 bei sekundären Medienelementen gibt an, dass die Medienelementressource mit dem vorherigen Medienelement geteilt wird. Die Länge eines primären Medienelements muss 0 sein.

Padding

Integer

[JPEG-basierte Fotos mit Bewegtbild]

Optional für das primäre Medienelement. Einfacher String mit einer positiven Ganzzahl für zusätzliche Zeichen in Byte Abstand zwischen dem Ende des codierten primären Bildes und dem Anfang des nächsten Medienelements.

[HEIC/AVIF-basierte Fotos mit Bewegtbild]

Für das primäre Medienelement erforderlich. Muss einen Wert gleich 8 haben, Überschriftslänge des Fotos mit Bewegtbild Feld für Videodaten („mpvd“).

Element:Werte für den MIME-Typ

Das Attribut Item:Mime definiert den MIME-Typ der einzelnen Medienelemente.

Wert

Beschreibung

image/jpeg

JPEG-Bild

image/heic

HEIC-Bild

image/avif

AVIF-Bild

video/mp4

MP4-Container

video/quicktime

MOV-Container

Element:Semantische Werte

Das Attribut Item:Semantic definiert die anwendungsspezifische Bedeutung Medienelement im Containerverzeichnis.

Value

Beschreibung

Primary

Gibt an, dass das Medienelement das primäre Bild für „Anzeigebereit“ im Container ist. Ein Foto mit Bewegtbild muss genau ein Element mit dieser Semantik enthalten.

MotionPhoto

Gibt an, dass das Medienelement der Videocontainer ist. Ein Foto mit Bewegtbild muss genau ein Element mit dieser Semantik enthalten. Der Speicherort dieses Medienelements muss sich am Ende der Datei befinden. Nachdem die Byte dieses Medienelements beendet wurden, dürfen keine weiteren Bytes platziert werden.

Fotos mit Bewegtbild mit einem primären Ultra HDR-Bild

Gemäß den Regeln für semantische Werte von Elementen, die in dieser Spezifikation und in Ultra HDR-Bildspezifikation, Fotos mit Bewegtbild und einem primären Ultra HDR-Bild müssen auch ein Medienelement mit eine Elementsemantik von "GainMap". Autoren, die Fotos mit Bewegtbild codieren, das Gainmap-Element vor dem Video-Element-Element.

ISOBMFF-Bildspezifisches Verhalten

Fotos mit Bewegtbild mit basierend auf ISOBMFF Bilder (z.B. HEIC- und AVIF-Bilder) müssen eine Struktur haben, bei der das Bild der Datei endet mit einem "Video mit Bewegtbild" auf oberster Ebene. Feld, die mit der Semantik der Syntaxbeschreibungssprache beschrieben wird, ISO/IEC 14496-1:2010(E) Klausel 8:

// Box as defined in ISO/IEC 14496-12:2015: 4.2
aligned(8) class MotionPhotoVideoData extends Box('mpvd') {
  bit(8) data[];
}

wobei die „Daten“ enthält alle Videobyte. Der spezielle Wert von „0“ ist für die Größe des Videodatenfelds mit Bewegtbild nicht zulässig. (Siehe ISO/IEC 14496-12:2015: 4.2 zur Definition einer Klassengröße, erweitert Box.)

Im XMP des ISOBMFF-Bilds muss auch der Padding-Wert des primären Medienelements definiert werden. Attributwert als Wert der Größe in Byte des Videos mit Bewegtbild Data Box-Header, d. h. die Header für Größe und Name.

In Abbildung 1, die diese Boxstruktur veranschaulicht, sehen Sie ein Beispiel für eine HEIC-basierte Bewegung. Foto:

Liniendiagramm, das die Anordnung von Elementen in einer HEIC-Bewegungsdatei zeigt

Abbildung 1: Darstellung der Felder auf oberster Ebene eines HEIC-Beispielbilds in eine einzelne HEIC-Datei mit Bewegtbild. Beachten Sie, dass die Reihenfolge der Felder hauptsächlich für (Bitte beachten Sie die relevanten Normen zur Erstellung HEIF- oder Videodateien); Die "mpvd"-Datei muss nach allen HEIC-Daten die Felder der Bilddatei an.

Videocontainer-Inhalte

Die Video-Containerdatei, die an das primäre Bild angehängt wird, muss unter mindestens einen primären Videotrack Dieser Titel ist erforderlich und enthält videocodierte in AVC HEVC oder AV1: Die Auflösung des primären Videoframes ist nicht definiert. Der Farbraum des Videos, und die Bittiefe variieren. SDR-Videos können zum Beispiel eine 8-Bit- Tiefe, Farbraum BT.709 mit einer sRGB-Transferfunktion. HDR-Videos können auch Sie haben eine Bittiefe von 10 Bit, einen Farbraum von BT.2100 und eine HLG- oder PQ-Übertragung. sowie HDR-Metadaten und Metadatentracks.

Die Videocontainerdatei kann eine optionale sekundäre Instanz mit höherer Auflösung enthalten. des Videos. Leser sollten deren Inhalte verwenden, um Substitutionen für die primäres Standbild, das im JPEG- oder HEIC-Bild codiert ist. Dieser Titel enthält möglicherweise mit AVC, HEVC oder AV1 codiertes Video mit niedrigerer Framerate. Sekundärer Videoframe Auflösung nicht definiert.

Es wird erwartet, dass alle Frames im sekundären Videotrack Frames im primären Videotrack hinzu. Jedes Paar von entsprechenden Frames in primären und sekundären Videotracks sollten identisch dargestellt werden. Zeitstempel. Wenn ein sekundärer Track-Frame ohne entsprechenden primären Track-Frame vorhanden ist, können Nutzer einen primären Track-Frame auswählen, der dem Präsentationszeitstempel als repräsentatives Thumbnail dafür an. sekundärer Videotrack.

Die Videocontainerdatei kann ein optionales 16-Bit-Mono- oder Stereo-Audio enthalten. Spur bei 44 kHz, 48 kHz oder 96 kHz, codiert in AAC. Leser sollten dies präsentieren Audiotrack, wenn der primäre Videotrack angezeigt wird.

Der sekundäre Videotrack, falls vorhanden, sollte immer nach dem primären Titel folgen. des Videos. In Bezug auf andere Tracks gibt es keine weiteren Einschränkungen bei der Reihenfolge. Die Der Trackindex des primären Videotracks muss niedriger sein als der eines sekundären Videos. des Videos. Das heißt, wenn der primäre Videotrack die Titelnummer 2 hat, werden alle Der sekundäre Videotrack muss eine Titelnummer größer oder gleich 3 haben.

Videometadaten-Track mit Machine-Intelligence-Bewertung

Autoren können der Video-Containerdatei optional einen Metadatentrack mit einem Geben Sie „meta“ ein. Der Metadatentrack muss genau eine Stichprobe haben, die Folgendes enthält: Bytestream in dem unter „Syntax“ beschriebenen Format.

Wenn der Metadatentrack vorhanden ist, wird der Tabelleneintrag mit der Beispielbeschreibung für den Track (d.h. das Feld "stsd" unter "mdia.minf.stbl.stsd" relativ zum „Trak“ Feld) muss ein einzelnes Atom enthalten, das für ein Beispiel mit Textmetadaten steht. Eingabe - (d. h. ein "mett"-Feld). Das „Met“ muss einen MIME-Typ-String haben, der gleich zu „application/motionphoto-image-meta“.

Syntax

Wenn dieser Metadatentrack definiert ist, muss sein Inhalt aus einem Bytestream bestehen. Entspricht der MotionPhotoMetadataDescriptor-Spezifikation, beschrieben hier mit der Semantik der Syntaxbeschreibungssprache, ISO/IEC 14496-1:2010(E) Klausel 8.

// BaseDescriptor as defined in ISO/IEC 14496-1:2010(E): 7.2.2.2
abstract aligned(8) expandable((1<<28) - 1) class BaseDescriptor
    : bit(8) tag=0 {
  // Empty. To be filled by classes extending this class.
}

// Score data for a frame.
class MotionPhotoFrameScoreDescriptor extends BaseDescriptor
    : bit(8) tag=MotionPhotoFrameScoreDescrTag {
  // The frame's score in the range [0, 1].
  float(32) score;

  // The frame's presentation timestamp in microseconds.
  int(64) presentationTimestampUs;
}

// Score data for a track.
class MotionPhotoTrackScoreDescriptor extends BaseDescriptor
    : bit(8) tag=MotionPhotoTrackScoreDescrTag {
  // The number of scored frames in the track.
  unsigned int(32) numScoredFrames;

  // The track's frames' score data. They must be in ascending order with
  // respect to the presentation timestamp.
  MotionPhotoFrameScoreDescriptor trackFrameScoreDescr[numScoredHighResFrames];
}

// Score data for a motion photo.
class MotionPhotoScoreDescriptor extends BaseDescriptor
    : bit(8) tag=MotionPhotoScoreDescrTag {

  // Machine-intelligence model version used to calculate the scores. Writers
  // using a scoring model should set this field to 1 or greater. Writers not
  // using any scoring model should set this field to 0.
  unsigned int(32) modelVersion;

  // The primary image's frame score data.
  MotionPhotoFrameScoreDescriptor primaryImageFrameScoreDescr;

  // The high-resolution motion photo frames' score data.
  MotionPhotoTrackScoreDescriptor highResTrackScoreDescr;
}

// Flag data for a track.
class MotionPhotoTrackFlagsDescriptor extends BaseDescriptor
    : bit(8) tag=MotionPhotoTrackFlagDescrTag {
  // Set to true to indicate the video frames have been stabilized and don't
  // require readers of the track to apply any further stabilization.
  bit(1) isStabilized;
}

// Flags for a motion photo.
class MotionPhotoFlagsDescriptor extends BaseDescriptor
        : bit(8) tag=MotionPhotoFlagDescrTag {
  // The low-resolution motion photo track's flag data.
  MotionPhotoTrackFlagDescriptor lowResTrackFlagsDescr;

  // The high-resolution motion photo track's flag data.
  MotionPhotoTrackFlagDescriptor highResTrackFlagsDescr;
}

// Container for motion photo metadata, like stabilization indicators and
// quality scoring.
class MotionPhotoMetadataDescriptor extends BaseDescriptor
    : bit(8) tag=MotionPhotoMetadataDescrTag {
  // Scoring data for the still and high-res frames.
  MotionPhotoScoreDescriptor motionPhotoScoreDescr;

  // Flags for the low-res and high-res frames.
  MotionPhotoFlagDescriptor motionPhotoFlagDescr;
}

// Class tags for MotionPhotoData using the "User Private" tag space 0xC0-0xFE
// for descriptors defined in ISO/IEC 14496-1:2010(E): 7.2.2.1, Table 1.
// 0xC0 MotionPhotoMetadataDescrTag
// 0xC1 MotionPhotoScoreDescrTag
// 0xC2 MotionPhotoTrackScoreDescrTag
// 0xC3 MotionPhotoFrameScoreDescrTag
// 0xC4 MotionPhotoFlagsDescrTag
// 0xC5 MotionPhotoTrackFlagDescrTag