Les photos animées sont des fichiers uniques qui contiennent une photo fixe et un vidéo courte, incluant un enregistrement audio. Ce type de support permet à un utilisateur de affichez une image fixe haute résolution, ainsi que la vidéo et le son pour le sentiment et l'atmosphère où l'image a été prise.
Dépendances
Voici les références normatives pour cette spécification:
- Mots clés à utiliser dans les RFC pour indiquer les niveaux d'exigences
- T.81 (09/92) Compression numérique et codage d'image statique continue images (JPEG)
- ISO/IEC 23008-12:2022 Codage et diffusion de contenus multimédias hautes efficacité Environnements hétérogènes Partie 12: Format de fichier image (HEIC)
- AVIF (Format de fichier image AV1) (AVIF)
- Format d'image Ultra HDR v1.0 | Développeurs Android (Ultra HDR)
- Spécification XMP ISO 16684-1:2011(E) Partie 1 (XMP)
- Adobe XMP Specification Part 3 - Stockage dans les fichiers (XMP)
- ISO/IEC 14496-10:2022 Codage des objets audiovisuels Partie 10: Niveau avancé Codage vidéo (AVC)
- ISO/IEC 23008-2:2023 Codage et diffusion de médias hautes performances dans Partie 2: Vidéo sur les environnements hétérogènes codage (HEVC)
- AV1 Bitstream et Spécification du processus de décodage (AV1)
- ISO/IEC 14496-1:2010 Codage d'objets audiovisuels - Systèmes
- Format de fichier média ISO Box 14496-12:2015 ISO/IEC 14496-12:2015 (ISOBMFF)
- ISO/IEC 14496-14:2020 Codage des objets audiovisuels Partie 14: fichier MP4 format (MP4)
- Apple QuickTime File Format (MOV)
Introduction
Les valeurs "DOIT", "NE DOIT PAS", "OBLIGATOIRE" et "DEVRAIT", "NE DEVRAIT PAS", "RECOMMANDÉ", "PEUT" et "FACULTATIF" conformément à la norme IETF défini dans le document RFC 2119.
Format photo animé
Les photos animées se composent d'une image fixe principale, JPEG, HEIC ou AVIF, avec une un fichier vidéo secondaire qui lui est ajouté. L'image principale contient le XMP de l'appareil photo. Des métadonnées décrivant comment afficher le contenu des images fixes et des fichiers vidéo et les métadonnées XMP du conteneur décrivant comment localiser le contenu du fichier vidéo.
Le fichier image peut comporter un Gainmap, comme c'est le cas avec les JPEG Ultra HDR.
Modèle de nom de fichier
Les rédacteurs doivent utiliser un nom de fichier correspondant à l'expression régulière suivante:
^([^\\s\\/\\\\][^\\/\\\\]*MP)\\.(JPG|jpg|JPEG|jpeg|HEIC|heic|AVIF|avif)
Les lecteurs peuvent ignorer les métadonnées XMP, le fichier vidéo ajouté ou la vidéo contenu si le format n'est pas suivi.
Encodage de données multimédias
L'image principale contient un élément de conteneur XMP répertoire de métadonnées définissant l'ordre et les propriétés des éléments multimédias suivants dans le conteneur de fichiers. Chaque fichier du conteneur possède un média correspondant dans le répertoire. L'élément multimédia décrit l'emplacement dans le fichier. et les propriétés de base de chaque fichier concaténé.
Attributs XMP
Deux ensembles de métadonnées XMP sont utilisés pour définir les informations sémantiques supplémentaires pour le format Motion Photo. Les métadonnées peuvent apparaître dans n'importe quel ordre.
Métadonnées de l'appareil photo
Les métadonnées de l'appareil photo encodent les informations sur la façon de présenter l'image principale et les parties vidéo de la photo animée.
- L'URI d'espace de noms est
http://ns.google.com/photos/1.0/camera/
. - Le préfixe d'espace de noms par défaut est
Camera
Les attributs suivants peuvent apparaître dans les métadonnées XMP des fichiers d'images fixes:
Nom |
Type |
Description |
|
Ces propriétés faisaient partie de la spécification Microvideo V1. Elles sont supprimées dans cette spécification et doivent être ignorées si elles sont présentes. En particulier, l'attribut |
|
|
|
0: indique que le fichier ne doit pas être traité comme une photo animée. 1: indique que le fichier doit être traité comme une photo animée. Toutes les autres valeurs ne sont pas définies et sont traitées de la même manière que 0. Si la valeur est nulle ou négative, le fichier est toujours traité comme qui ne sont pas des photos animées, même si une vidéo est ajoutée au fichier. Le XMP étant transmis par la plupart des éditeurs sages, les fichiers image fixes peut toujours avoir une valeur résiduelle de 1 pour ce champ, même si le a été supprimée. Ce champ n'est donc pas définitif et les lecteurs doit toujours confirmer la présence d'une vidéo. |
|
|
Indique la version du format de fichier de la photo animée. Cette spécification définit la version "1". |
|
|
Valeur longue représentant le code temporel de présentation (en microsecondes) de l'image vidéo correspondant à l'image fixe. La valeur peut être -1 pour indiquer qu'elle n'est pas définie ou n'est pas spécifiée. |
Comportement de la présentation
Si Camera:MotionPhotoPresentationTimestampUs
n'est pas présent dans le paquet XMP,
les lecteurs doivent utiliser un code temporel de présentation situé juste avant le code temporel
la plus proche du milieu de la piste vidéo, c'est-à-dire la durée de celle-ci ;
divisé par 2.
Si Camera:MotionPhotoPresentationTimestampUs
est présent dans le paquet XMP et
"application/motionphoto-image-meta"
est présent dans la vidéo (identique à
doit apparaître dans le primaryImageFrameScoreDescr
presentationTimestampUs
de ce circuit. Si Camera:MotionPhotoPresentationTimestampUs
n'est pas
présente dans le paquet XMP et que la piste de métadonnées est présente, la valeur dans
la valeur de la piste de métadonnées doit être -1.
Élément du conteneur
L'élément conteneur est encodé dans les métadonnées XMP de l'image principale. définit le répertoire des éléments multimédias dans le conteneur. Les éléments multimédias doivent être situés dans le fichier conteneur, dans le même ordre que les éléments de l'élément multimédia le répertoire et doit être étroitement empaqueté.
- L'URI d'espace de noms est
http://ns.google.com/photos/1.0/container/
. - Le préfixe d'espace de noms par défaut est
Container
Le répertoire ne peut contenir qu'un seul élément d'image principal. Il doit s'agir du premier élément dans le répertoire.
Nom de l'élément |
Type |
Description |
|
Tableau ordonné de structures |
Tableau ordonné de structures |
Élément d'élément
Les éléments multimédias décrivent la manière dont chaque élément doit être utilisé par l'application.
- L'URI d'espace de noms est
http://ns.google.com/photos/1.0/container/item/
. - Le préfixe d'espace de noms par défaut est
Item
Le premier élément multimédia doit être l'image principale. Il doit contenir un Mime
spécifiant l'un des types MIME d'image répertoriés dans la section "Type MIME de l'élément"
Valeurs. La longueur de l'élément principal peut être déterminée en analysant l'élément principal
en fonction de son type MIME, à partir du début du conteneur de fichiers.
Le premier élément multimédia peut contenir un attribut Padding
spécifiant
une marge intérieure entre la fin de l'image principale encodée et le début de la
l'élément multimédia suivant. Seul le premier élément multimédia peut contenir un attribut Padding
.
Chaque élément multimédia doit contenir un attribut Mime
. Les éléments multimédias secondaires
contiennent également des attributs de longueur.
Les éléments multimédias séquentiels peuvent partager des données de ressources dans le conteneur de fichiers. La
le premier élément multimédia détermine
l'emplacement de la ressource dans le conteneur de fichiers,
et les éléments multimédias partagés suivants ont Length
défini sur 0 dans le cas où
les données de ressources sont elles-mêmes un conteneur.
L'emplacement des ressources d'éléments multimédias dans le conteneur est déterminé par la somme
les valeurs Length
des ressources d'éléments secondaires précédentes à la longueur de
l'encodage de l'image principale, plus Padding
si spécifié.
Nom de l'attribut |
Type |
Description |
|
|
Cette colonne est obligatoire. Chaîne simple indiquant le type MIME de l'élément multimédia dans le conteneur. |
|
|
Cette colonne est obligatoire. Chaîne simple indiquant la signification spécifique de l'élément multimédia à l'application. Pour en savoir plus, consultez la section "Valeurs sémantiques des éléments". |
|
|
Obligatoire pour les éléments multimédias secondaires, y compris le conteneur vidéo. Nombre entier positif en octets de l'élément. Les éléments multimédias doivent se présenter dans leur forme d'origine, sans aucun codage. La valeur de longueur correspond à la longueur réelle des octets du fichier. Une longueur de 0 dans les éléments multimédias secondaires indique que la ressource d'élément multimédia est partagée avec l'élément multimédia précédent. La longueur devrait être égale à 0 dans un élément multimédia principal. |
|
|
[Photos animées au format JPEG] Facultatif pour l'élément multimédia principal. Chaîne simple contenant un entier positif en octets de longueur supplémentaire une marge intérieure entre la fin de l'image principale encodée et le début de la l'élément multimédia suivant. [Photos animées HEIC/AVIF] Obligatoire pour l'élément multimédia principal. Doit avoir une valeur égale à 8, le longueur de l'en-tête de la Photo animée Données vidéo ("mpvd"). |
Item:Valeurs de type MIME
L'attribut Item:Mime
définit le type MIME de chaque élément multimédia.
Valeur |
Description |
|
Image JPEG |
|
Image HEIC |
|
Image AVIF |
|
Conteneur MP4 |
|
Conteneur MOV |
Item:Valeurs sémantiques
L'attribut Item:Semantic
définit la signification spécifique de chaque application
l'élément multimédia dans le répertoire du conteneur.
|
Description |
|
Indique que l'élément multimédia est l'image display prête principale dans le conteneur. Une photo animée doit inclure un seul élément avec cette sémantique. |
|
Indique que l'élément multimédia est le conteneur vidéo. Une photo animée doit inclure un seul élément avec cette sémantique. L'emplacement de cet élément multimédia doit se trouver à la fin du fichier. Aucun autre octet ne peut être placé après l'arrêt des octets de cet élément multimédia. |
Photos animées avec une image Ultra HDR principale
Conformément aux règles de valeur sémantique des éléments définies dans cette spécification et dans
Spécifications des images Ultra HDR
les photos animées avec une image Ultra HDR principale doivent également inclure un élément multimédia avec
une sémantique d'élément de "GainMap"
. De plus, les rédacteurs qui encodent
les photos animées doivent placer
l'élément "gainmap"
avant l'élément "video".
Comportement spécifique aux images ISOBMFF
Photos animées avec Basé sur le format ISOBMFF des images (par exemple, les images HEIC et AVIF) doivent être structurées de sorte que l'image du fichier se termine par une mention de premier niveau "Motion Photo Video Data" (Données vidéo animées). boîte, à l'aide de la sémantique du langage de description syntaxique défini dans Clause 8 de la norme ISO/IEC 14496-1:2010(E) :
// Box as defined in ISO/IEC 14496-12:2015: 4.2
aligned(8) class MotionPhotoVideoData extends Box('mpvd') {
bit(8) data[];
}
où les « données » contient tous les octets de la vidéo. La valeur spéciale de "0" n'est pas autorisée pour la taille de la zone Données vidéo des photos animées. (Reportez-vous à ISO/IEC 14496-12:2015: 4.2 pour la définition d'une taille de classe qui prolonge Box.)
Le XMP de l'image ISOBMFF doit également définir la marge intérieure de l'élément multimédia principal. valeur de l'attribut comme étant égale à la taille en octets de la vidéo animée En-tête de la zone de données, c'est-à-dire les en-têtes de taille et de nom.
Reportez-vous à la figure 1 illustrant cette structure en cases pour obtenir un exemple de mouvement basé sur l'algorithme HEIC. photo:
Figure 1 : Illustration des cadres supérieurs d'un exemple d'image HEIC dans un seul fichier photo animé HEIC. Notez que l'ordre des boîtes concerne principalement illustration uniquement (veuillez vous référer aux normes pertinentes sur la façon de créer HEIF ou des fichiers vidéo) ; mais le fichier "mpvd" doit être placé après tous les composants HEIC de votre fichier image.
Contenu du conteneur vidéo
Le fichier de conteneur vidéo ajouté à l'image principale doit être inclus dans au moins une piste vidéo principale. Cette piste est obligatoire et contient une vidéo encodée dans AVC. HEVC ou AV1. La la résolution de l'image de la vidéo principale n'est pas définie. L'espace colorimétrique de la vidéo, et la profondeur de bits peut varier. Par exemple, les vidéos SDR peuvent avoir une bande passante de 8 bits et l'espace colorimétrique BT.709, avec une fonction de transfert sRVB. Les vidéos HDR peuvent aussi Profondeur de 10 bits, espace colorimétrique BT.2100 et transfert HLG ou PQ , ainsi que les métadonnées et pistes de métadonnées HDR.
Le fichier du conteneur vidéo peut contenir une instance secondaire de résolution supérieure facultative la piste vidéo. Les lecteurs doivent utiliser son contenu pour afficher les substitutions pour le une image fixe principale encodée dans l'image JPEG ou HEIC. Cette piste contient peut-être avec une fréquence d'images inférieure codée en AVC, HEVC ou AV1. L'image vidéo secondaire la résolution n'est pas définie.
Il est normal que toutes les images de la piste vidéo secondaire aient les images correspondantes dans la piste vidéo principale. Chaque paire d'entrées correspondantes les images des pistes vidéo principales et secondaires doivent avoir la même présentation codes temporels. S'il existe une image de piste secondaire sans image principale correspondante l'image de suivi, les spectateurs peuvent essayer de sélectionner une image de piste principale avec l'image la plus proche code temporel de présentation correspondant comme miniature représentative une piste vidéo secondaire.
Le fichier du conteneur vidéo peut contenir une piste audio mono ou stéréo 16 bits facultative à 44 kHz, 48 kHz ou 96 kHz encodées en AAC. Les lecteurs doivent présenter ceci la piste audio lorsque la piste vidéo principale est affichée.
La piste vidéo secondaire, le cas échéant, doit toujours apparaître après la piste vidéo principale. la piste vidéo. Il n'existe aucune autre contrainte d'ordre concernant les autres pistes. La l'index de la piste vidéo principale doit être inférieur à celui des autres pistes la piste vidéo. Autrement dit, si la piste vidéo principale porte le numéro 2, le numéro de la piste vidéo secondaire doit être supérieur ou égal à 3.
Piste de métadonnées vidéo avec scores d'intelligence artificielle
Les rédacteurs peuvent éventuellement ajouter une piste de métadonnées au fichier du conteneur vidéo avec saisissez "meta". La piste de métadonnées doit contenir exactement un échantillon contenant Flux d'octets au format décrit dans la section "Syntaxe".
Si la piste de métadonnées est présente, l'exemple d'entrée de table de description pour la valeur (c'est-à-dire la boîte "stsd" située à l'adresse "mdia.minf.stbl.stsd" par rapport à "trak" ) doit contenir un seul atome indiquant un échantillon de métadonnées de texte. (une boîte "mett"). Le "mett" la boîte de dialogue doit présenter une chaîne de type MIME égale à par "application/motionphoto-image-meta".
Syntaxe
Si cette piste de métadonnées est définie, son contenu doit être un flux d'octets
conforme à la spécification MotionPhotoMetadataDescriptor
, décrite
en utilisant ici la sémantique du langage de description syntaxique défini
Clause 8 de la norme ISO/IEC 14496-1:2010(E).
// 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