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:
- Schlüsselwörter zur Verwendung in RFCs zur Angabe von Anforderungsstufen
- T.81 (09/92) Digitale Komprimierung und Codierung von Standbildern Bilder (JPEG)
- ISO/IEC 23008-12:2022 – Hocheffiziente Codierung und Medienbereitstellung in Heterogene Umgebungen, Teil 12: Image File Format (HEIC)
- AV1-Bilddateiformat (AVIF) (AVIF)
- Ultra-HDR-Bildformat v1.0 | Android-Entwickler (Ultra HDR)
- ISO 16684-1:2011(E) XMP-Spezifikation Teil 1 (XMP)
- Adobe XMP Specification Part 3 Storage in Files (XMP)
- ISO/IEC 14496-10:2022 – Codierung von audiovisuellen Objekten – Teil 10: Fortgeschrittene Videocodierung (AVC)
- ISO/IEC 23008-2:2023 – Hocheffiziente Codierung und Medienbereitstellung in Video zu heterogenen Umgebungen, Teil 2: High Efficiency Codierung (HEVC)
- AV1-Bitstream und Decoding Process Specification (AV1)
- ISO/IEC 14496-1:2010 – Codierung von audiovisuellen Objekten – Systeme
- ISO/IEC 14496-12:2015 ISO Box-Mediadateiformat (ISOBMFF)
- ISO/IEC 14496-14:2020 – Codierung von audiovisuellen Objekten – Teil 14: MP4-Datei Format (MP4)
- Apple QuickTime-Dateiformat (MOV)
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 |
|
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 |
|
|
|
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. |
|
|
Gibt das Dateiformat des Fotos mit Bewegtbild an. Diese Spezifikation definiert Version „1“. |
|
|
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 |
|
Geordnetes Array von Strukturen |
Geordnetes Array von |
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 |
|
|
Erforderliche Angabe. Einfacher String, der den MIME-Typ des Medienelements im Container angibt. |
|
|
Erforderliche Angabe. Einfacher String, der die anwendungsspezifische Bedeutung des Medienelements angibt. Die Definition finden Sie im Abschnitt zu den semantischen Werten. |
|
|
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. |
|
|
[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 |
|
JPEG-Bild |
|
HEIC-Bild |
|
AVIF-Bild |
|
MP4-Container |
|
MOV-Container |
Element:Semantische Werte
Das Attribut Item:Semantic
definiert die anwendungsspezifische Bedeutung
Medienelement im Containerverzeichnis.
|
Beschreibung |
|
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. |
|
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:
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