Le foto in movimento sono singoli file che contengono un'immagine fotografica statica e un un breve video che include la registrazione audio. Questo tipo di contenuti multimediali consente a un utente visualizzare un fermo immagine ad alta risoluzione, nonché il video e l'audio per acquisire il sentiment e l'atmosfera in cui è stata scattata l'immagine.
Dipendenze
Di seguito sono riportati i riferimenti normativi per questa specifica:
- Parole chiave da utilizzare nelle RFC per indicare i livelli dei requisiti
- T.81 (09/92) Compressione digitale e codifica del suono continuo immagini (JPEG)
- ISO/IEC 23008-12:2022 Codifica ad alta efficienza e distribuzione dei contenuti multimediali in ambienti eterogenei Parte 12: formato di file immagine (HEIC)
- AV1 Image File Format (AVIF) (AVIF)
- Formato dell'immagine Ultra HDR v1.0 | Android for Developers (Ultra HDR)
- Specifiche XMP ISO 16684-1:2011(E) Parte 1 (XMP)
- Specifiche di Adobe XMP - Parte 3 - Spazio di archiviazione nei file (XMP)
- Codifica di oggetti audiovisivi ISO/IEC 14496-10:2022 Parte 10: avanzata codifica video (AVC)
- ISO/IEC 23008-2:2023 Codifica ad alta efficienza e distribuzione dei contenuti multimediali in ambienti eterogenei - Parte 2: video ad alta efficienza con codifica (HEVC)
- Bitstream AV1 e Decoding Process Specification (AV1)
- Codifica di oggetti audiovisivi secondo lo standard ISO/IEC 14496-1:2010 - Sistemi
- Formato file multimediale ISO/IEC 14496-12:2015 ISO/IEC 14496-12:2015 (ISOBMFF)
- Codifica ISO/IEC 14496-14:2020 di oggetti audiovisivi Parte 14: file MP4 formato (MP4)
- Apple QuickTime File Format (MOV)
Introduzione
L'utilizzo di "MUST", "MUST NOT", "REQUIRED", "SHOULD", "NON DOVREBBE", "CONSIGLIATO", "MAGGIO" e "FACOLTATIVO" secondo lo standard IETF definito in RFC2119.
Formato foto in movimento
I file di foto in movimento sono costituiti da un file immagine principale, JPEG, HEIC o AVIF, con un viene aggiunto un file video secondario. L'immagine principale contiene Fotocamera XMP metadati che descrivono come visualizzare i contenuti del file immagine e del file video; e i metadati del container XMP che descrivono come individuare i contenuti del file video.
Il file immagine potrebbe avere una mappa di guadagno, come nel caso dei file JPEG Ultra HDR.
Pattern nome file
Gli autori devono utilizzare un nome file corrispondente alla seguente espressione regolare:
^([^\\s\\/\\\\][^\\/\\\\]*MP)\\.(JPG|jpg|JPEG|jpeg|HEIC|heic|AVIF|avif)
I lettori possono ignorare i metadati XMP, il file video aggiunto o il video se il pattern non viene seguito.
codifica dei dati multimediali
L'immagine principale contiene un elemento container XMP una directory di metadati che definisce l'ordine e le proprietà dei contenuti nel contenitore di file. A ogni file nel contenitore corrisponde un file multimediale corrispondente dell'elemento nella directory. L'elemento multimediale descrive la posizione nel file e le proprietà di base di ogni file concatenato.
Attributi XMP
Vengono usati due insiemi di metadati XMP per definire le informazioni semantiche aggiuntive per il formato foto in movimento. I metadati possono essere visualizzati in qualsiasi ordine.
Metadati della videocamera
I metadati della videocamera codificano le informazioni su come presentare l'immagine principale e parti video della foto in movimento.
- L'URI dello spazio dei nomi è
http://ns.google.com/photos/1.0/camera/
- Il prefisso dello spazio dei nomi predefinito è
Camera
Nei metadati XMP del file immagine possono essere presenti i seguenti attributi:
Nome |
Tipo |
Descrizione |
|
Queste proprietà facevano parte della specifica Microvideo V1. Vengono eliminati in questa specifica e devono essere ignorati, se presenti. In particolare, l'attributo |
|
|
|
0: indica che il file non deve essere considerato come foto in movimento. 1: indica che il file deve essere trattato come una foto in movimento. Tutti gli altri valori non sono definiti e vengono trattati in modo equivalente a 0. Se il valore è zero o negativo, il file viene sempre considerato non in movimento, anche se al file viene aggiunto un video. Poiché l'XMP viene trasferito dalla maggior parte degli editor ben educati, i file immagine potrebbe avere un valore residuo pari a 1 per questo campo anche se alla fine il video è stato rimosso. Questo campo, pertanto, non è definitivo e i lettori Deve sempre confermare la presenza di un video. |
|
|
Indica la versione del formato file della foto in movimento. Questa specifica definisce la versione "1". |
|
|
Valore lungo che rappresenta il timestamp della presentazione (in microsecondi) del frame video corrispondente al fermo dell'immagine. Il valore può essere -1 per indicare non impostato/non specificato. |
Comportamento della presentazione
Se Camera:MotionPhotoPresentationTimestampUs
non è presente nel pacchetto XMP,
i lettori devono utilizzare un timestamp della presentazione immediatamente precedente al timestamp
più vicino al centro della traccia video, ovvero la durata della traccia
diviso per 2.
Se Camera:MotionPhotoPresentationTimestampUs
è presente nel pacchetto XMP e
"application/motionphoto-image-meta"
è presente nel video, lo stesso
deve apparire nell'elemento primaryImageFrameScoreDescr
presentationTimestampUs
campo di quel percorso. Se Camera:MotionPhotoPresentationTimestampUs
non è
nel pacchetto XMP e la traccia dei metadati è presente, allora il valore
la traccia dei metadati deve essere -1.
Elemento contenitore
L'elemento container è codificato nei metadati XMP dell'immagine principale e definisce la directory degli elementi multimediali nel container. Gli elementi multimediali devono essere situato nel file contenitore, nello stesso ordine degli elementi dell'elemento multimediale della directory e deve essere compresso.
- L'URI dello spazio dei nomi è
http://ns.google.com/photos/1.0/container/
- Il prefisso dello spazio dei nomi predefinito è
Container
La directory può contenere un solo elemento dell'immagine principale e deve essere il primo dell'elemento nella directory.
Nome elemento |
Tipo |
Descrizione |
|
Array ordinato di strutture |
Array ordinato di strutture |
Elemento elemento
Gli elementi degli elementi multimediali descrivono come ogni elemento dovrebbe essere utilizzato dall'applicazione.
- L'URI dello spazio dei nomi è
http://ns.google.com/photos/1.0/container/item/
- Il prefisso dello spazio dei nomi predefinito è
Item
Il primo elemento multimediale deve essere l'immagine principale. Deve contenere un Mime
attributo che specifica uno dei tipi MIME immagine elencati in Tipo MIME elemento
Valori. La lunghezza dell'elemento principale può essere determinata analizzando il valore
in base al tipo MIME a partire dall'inizio del contenitore di file.
Il primo elemento multimediale può contenere un attributo Padding
che specifica
spaziatura interna tra la fine dell'immagine principale codificata e l'inizio del
successivo. Solo il primo elemento multimediale può contenere un attributo Padding
.
Ogni elemento multimediale deve contenere un attributo Mime
. Gli elementi multimediali secondari devono
e contiene anche gli attributi Length.
Gli elementi multimediali sequenziali possono condividere dati delle risorse all'interno del contenitore dei file. La
il primo elemento multimediale determina la posizione della risorsa nel contenitore di file,
e gli elementi multimediali condivisi successivi hanno Length
impostato su 0 nel caso in cui l'elemento
e i dati delle risorse sono di per sé un container.
La posizione delle risorse degli elementi multimediali nel contenitore viene determinata sommando
i valori Length
delle risorse di elementi secondari precedenti alla lunghezza del
la codifica dell'immagine principale più Padding
, se specificato.
Nome attributo |
Tipo |
Descrizione |
|
|
Obbligatorio. Stringa semplice che indica il tipo MIME dell'elemento multimediale nel contenitore. |
|
|
Obbligatorio. Stringa semplice che indica il significato specifico dell'applicazione dell'elemento multimediale. Consulta la sezione Valori semantici degli elementi per la definizione. |
|
|
Obbligatorio per gli elementi multimediali secondari, incluso il contenitore video. Il numero intero positivo in byte dell'articolo. Gli elementi multimediali devono essere nella loro forma originale, senza codifica. Il valore della lunghezza corrisponde alla lunghezza effettiva dei byte nel file. La lunghezza pari a 0 negli elementi multimediali secondari indica che la risorsa dell'elemento multimediale è condivisa con l'elemento multimediale precedente. La lunghezza dovrebbe essere pari a 0 in un elemento multimediale principale. |
|
|
[Foto in movimento basate su JPEG] Facoltativo per l'elemento multimediale principale. Stringa semplice contenente un numero intero positivo in byte di lunghezza spaziatura interna tra la fine dell'immagine principale codificata e l'inizio del successivo. [Foto in movimento basate su HEIC/AVIF] Obbligatorio per l'elemento multimediale principale. Deve avere un valore uguale a 8, lunghezza dell'intestazione della foto in movimento Riquadro Dati video ("mpvd"). |
Elemento:valori tipo MIME
L'attributo Item:Mime
definisce il tipo MIME di ogni elemento multimediale.
Valore |
Descrizione |
|
Immagine JPEG |
|
Immagine HEIC |
|
Immagine AVIF |
|
Contenitore MP4 |
|
Contenitore MOV |
Elemento:valori semantici
L'attributo Item:Semantic
definisce il significato specifico dell'applicazione di ogni
un elemento multimediale nella directory del container.
|
Descrizione |
|
Indica che l'elemento multimediale è l'immagine display principale pronta nel contenitore. Una foto in movimento deve includere un solo elemento con questa semantica. |
|
Indica che l'elemento multimediale è il contenitore video. Una foto in movimento deve includere un solo elemento con questa semantica. Il percorso di questo elemento multimediale deve trovarsi alla fine del file. Non è possibile inserire altri byte dopo la terminazione dei byte di questo elemento multimediale. |
Foto in movimento con un'immagine Ultra HDR principale
In base alle regole per i valori semantici degli elementi definite in questa specifica e
le specifiche delle immagini Ultra HDR,
le foto in movimento con un'immagine Ultra HDR principale devono includere anche un elemento multimediale con
una semantica dell'elemento pari a "GainMap"
. Inoltre, gli autori che codificano le foto in movimento devono inserire
l'elemento revenuemap prima dell'elemento video.
Comportamento specifico per immagine ISOBMFF
Foto in movimento con Basato su ISOBMFF immagini (ad es. le immagini HEIC e AVIF) devono avere una struttura che del file termina con i "Dati video con foto in movimento" di primo livello casella di controllo, descritti utilizzando la semantica del Syntactic Description Language definito in ISO/IEC 14496-1:2010(E) clausola 8:
// Box as defined in ISO/IEC 14496-12:2015: 4.2
aligned(8) class MotionPhotoVideoData extends Box('mpvd') {
bit(8) data[];
}
dove i "dati" contiene tutti i byte video. Il valore speciale "0" non è consentito per le dimensioni della casella dati video foto in movimento. (Consultare ISO/IEC 14496-12:2015: 4.2 per la definizione di una dimensione della classe che estende Box).
L'XMP dell'immagine ISOBMFF deve anche definire la spaziatura interna dell'elemento multimediale principale. uguale alle dimensioni in byte del video con foto in movimento Data Box, ovvero le intestazioni di dimensione e nome.
Fai riferimento alla Figura 1 che illustra la struttura di questa scatola per un esempio di movimento basato su HEIC foto:
Figura 1. Illustrazione dei riquadri di primo livello di un'immagine HEIC di esempio all'interno un singolo file di foto in movimento HEIC. Tieni presente che l'ordine delle caselle è composto principalmente per a scopo puramente illustrativo (fai riferimento agli standard pertinenti su come costruire HEIF o file video); tuttavia, il file "mpvd" la casella deve essere inserita dopo nelle caselle del file immagine.
Contenuti del contenitore video
Il file del contenitore video aggiunto all'immagine principale deve includere in almeno una traccia video principale. Questa traccia è obbligatoria e contiene video codificato in AVC, HEVC oppure AV1. La La risoluzione del frame video principale non è definita. Lo spazio colore del video, e la profondità di bit può variare. Ad esempio, i video in SDR potrebbero avere una velocità a 8 bit profondità, spazio colore BT.709, con funzione di trasferimento sRGB. Oppure, i video HDR possono hanno una profondità di 10 bit, uno spazio colore BT.2100 e un trasferimento HLG o PQ insieme a metadati HDR e tracce di metadati.
Il file del contenitore video può contenere un elemento secondario facoltativo a risoluzione più alta traccia video. I lettori devono utilizzare i suoi contenuti per mostrare le sostituzioni dei valori immagine statica principale codificata nell'immagine JPEG o HEIC. Questa traccia può contenere video con frequenza fotogrammi inferiore codificati in AVC, HEVC o AV1. Il frame video secondario non è definita.
È previsto che tutti i fotogrammi nella traccia video secondaria abbiano i fotogrammi corrispondenti nella traccia video principale. Ogni coppia di risposte i frame nelle tracce video primarie e secondarie devono avere una presentazione identica i timestamp. Se è presente un frame della traccia secondaria senza un frame principale corrispondente frame del brano, gli spettatori possono provare a selezionare un frame della traccia principale con il con il timestamp della presentazione corrispondente alla miniatura rappresentativa traccia video secondaria.
Il file del contenitore video può contenere un audio in formato mono o stereo a 16 bit facoltativo traccia a 44 kHz, 48 kHz o 96 kHz codificata in AAC. I lettori dovrebbero presentare quando viene visualizzata la traccia video principale.
La traccia video secondaria, se presente, deve sempre essere dopo quella principale traccia video. Non ci sono altri vincoli di ordinamento relativi ad altre tracce. La La traccia video principale deve avere un indice delle tracce inferiore a quello di qualsiasi traccia video secondaria traccia video. In altre parole, se la traccia video principale ha la traccia numero 2, allora qualsiasi La traccia video secondaria deve avere un numero di traccia maggiore o uguale a 3.
Traccia dei metadati video con punteggio di Machine Intelligence
Gli autori possono aggiungere facoltativamente una traccia di metadati al file del contenitore video con un digita "meta". La traccia di metadati deve avere esattamente un campione contenente un flusso di byte nel formato descritto in "Sintassi".
Se è presente la traccia dei metadati, viene visualizzata la voce della tabella della descrizione di esempio per il parametro traccia (ovvero la casella "stsd" situata in "mdia.minf.stbl.stsd" relativa al parametro "trak" (box) deve contenere un singolo atomo che indica un campione di metadati di testo - (ad es.una casella "mett"). Il "mett" deve avere una stringa di tipo MIME uguale in "application/motionphoto-image-meta".
Sintassi
Se viene definita questa traccia di metadati, i relativi contenuti devono essere costituiti da uno stream di byte.
conforme a questa specifica MotionPhotoMetadataDescriptor
, descritta
utilizzando la semantica del Syntactic Description Language definito in
ISO/IEC 14496-1:2010(E) clausola 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