Las fotos en movimiento son archivos individuales que contienen una imagen fija y una un video corto, que incluye la grabación de audio. Este tipo de contenido multimedia le permite al usuario ver una imagen fija de alta resolución, así como el video y el sonido para capturar la y la atmósfera donde se tomó la imagen.
Dependencias
Las siguientes son referencias normativas para esta especificación:
- Palabras clave para usar en los RFC para indicar los niveles de requisitos
- T.81 (09/92) Compresión y codificación digital de imágenes fijas de tono continuos imágenes (JPEG)
- ISO/IEC 23008-12:2022 Codificación de alta eficiencia y entrega de contenido multimedia en Entornos heterogéneos - Parte 12: Formato de archivo de imagen (HEIC)
- Formato de archivo de imagen AV1 (AVIF) (AVIF)
- Formato de imagen Ultra HDR v1.0 | Desarrolladores de Android (Ultra HDR)
- Especificación de XMP ISO 16684-1:2011(E) (parte 1) (XMP)
- Almacenamiento en archivos de la especificación de Adobe XMP, parte 3 (XMP)
- ISO/IEC 14496-10:2022 Codificación de objetos audiovisuales, parte 10: opciones avanzadas codificación de video (AVC)
- ISO/IEC 23008-2:2023 Codificación de alta eficiencia y entrega de contenido multimedia en Entornos heterogéneos Parte 2: Video de alta eficiencia codificación (HEVC)
- Flujo de bits de AV1 y Especificación del proceso de decodificación (AV1)
- ISO/IEC 14496-1:2010 Codificación de objetos audiovisuales Sistemas
- Formato de archivo multimedia de la caja ISO/IEC 14496-12:2015 (ISOBMFF)
- ISO/IEC 14496-14:2020 Codificación de objetos audiovisuales, parte 14: archivo MP4 formato (MP4)
- Formato de archivo QuickTime de Apple (MOV)
Introducción
El uso de "DEBE", "NO DEBE", "OBLIGATORIO", "DEBERÍA", "NO DEBERÍA", "RECOMENDADO", "MAYO" y "OPCIONAL" según el estándar IETF definido en RFC2119.
Formato de fotos en movimiento
Los archivos de fotos en movimiento consisten en un archivo de imagen estática principal, JPEG, HEIC o AVIF, con una archivo de video secundario adjunto. La imagen principal contiene el archivo XMP de la cámara. metadatos que describen cómo mostrar el archivo de imagen estática y el contenido del archivo de video y metadatos de XMP del contenedor que describen cómo ubicar el contenido del archivo de video.
El archivo de imagen puede tener un mapa de ganancia, como es el caso de los JPEG Ultra HDR.
Patrón de nombre de archivo
Los escritores deben usar un nombre de archivo que coincida con la siguiente expresión regular:
^([^\\s\\/\\\\][^\\/\\\\]*MP)\\.(JPG|jpg|JPEG|jpeg|HEIC|heic|AVIF|avif)
Los lectores pueden ignorar los metadatos XMP, el archivo de video anexado o el video. el contenido si no se sigue el patrón.
Codificación de datos multimedia
La imagen principal contiene un elemento XMP de elemento de contenedor. Directorio de metadatos que define el orden y las propiedades del contenido multimedia posterior en el contenedor de archivos. Cada archivo del contenedor tiene un contenido multimedia correspondiente del directorio. El elemento multimedia describe la ubicación en el archivo. y las propiedades básicas de cada archivo concatenado.
Atributos XMP
Se usan dos conjuntos de metadatos XMP para definir la información semántica adicional para el formato de Foto en movimiento. Los metadatos pueden aparecer en cualquier orden.
Metadatos de la cámara
Los metadatos de la cámara codifican la información sobre cómo presentar la imagen principal y partes de video de la Foto en movimiento.
- El URI del espacio de nombres es
http://ns.google.com/photos/1.0/camera/
- El prefijo del espacio de nombres predeterminado es
Camera
Los siguientes atributos pueden aparecer en los metadatos XMP del archivo de imagen fija:
Name |
Tipo |
Descripción |
|
Estas propiedades formaban parte de la especificación de Microvideo V1. Se borran en esta especificación y se deben ignorar si están presentes. En particular, el atributo |
|
|
|
0: Indica que el archivo no debe tratarse como una Foto en movimiento. 1: Indica que el archivo debe tratarse como una Foto en movimiento. Todos los demás valores son indefinidos y se tratan de forma equivalente a 0. Si el valor es cero o negativo, el archivo siempre se considera un que no sean fotos en movimiento, incluso si se agregó un video al archivo. Debido a que la mayoría de los editores con buen comportamiento transfieren XMP, los archivos de imagen aún aún puede tener un valor residual de 1 para este campo aunque el valor el video se ha eliminado. Por lo tanto, este campo no es definitivo, y los lectores siempre debe confirmar que hay un video presente. |
|
|
Indica la versión en formato de archivo de la Foto en movimiento. Esta especificación define la versión “1”. |
|
|
Valor largo que representa la marca de tiempo de presentación (en microsegundos) del fotograma correspondiente a la imagen estática El valor puede ser -1 para indicar no establecido o no especificado. |
Comportamiento de la presentación
Si Camera:MotionPhotoPresentationTimestampUs
no está presente en el paquete XMP,
los lectores deberían usar una marca de tiempo de presentación que anteceda inmediatamente a la marca de tiempo
más cercana a la mitad de la pista de video, es decir, la duración de la pista de video
dividida por 2.
Si Camera:MotionPhotoPresentationTimestampUs
está presente en el paquete XMP y
la "application/motionphoto-image-meta"
está presente en el video, el mismo
el valor debe aparecer en el primaryImageFrameScoreDescr
presentationTimestampUs
de la rama. Si Camera:MotionPhotoPresentationTimestampUs
no es
presente en el paquete XMP y la pista de metadatos, entonces el valor en
la pista de metadatos debe ser -1.
Elemento de contenedor
El elemento contenedor está codificado en los metadatos XMP de la imagen principal y define el directorio de los elementos multimedia del contenedor. Los elementos multimedia deben ubicado en el archivo contenedor en el mismo orden que los elementos multimedia de del directorio y deben estar bien empaquetados.
- El URI del espacio de nombres es
http://ns.google.com/photos/1.0/container/
- El prefijo del espacio de nombres predeterminado es
Container
El directorio solo puede contener un elemento de imagen principal y debe ser el primero. del directorio.
Nombre del elemento |
Tipo |
Descripción |
|
Arreglo de estructuras ordenado |
Array ordenado de estructuras |
Elemento:
Los elementos de elementos multimedia describen cómo debe usar la aplicación cada elemento.
- El URI del espacio de nombres es
http://ns.google.com/photos/1.0/container/item/
- El prefijo del espacio de nombres predeterminado es
Item
El primer elemento multimedia debe ser la imagen principal. Debe contener un Mime
atributo que especifica uno de los tipos de MIME de imagen incluidos en el tipo de MIME del elemento
Valores. La longitud del elemento principal se puede determinar analizando el elemento principal
según su tipo de MIME, comenzando por el principio del contenedor de archivos.
El primer elemento multimedia puede contener un atributo Padding
que especifique
relleno entre el final de la imagen primaria codificada y el inicio de la
elemento multimedia siguiente. Solo el primer elemento multimedia puede contener un atributo Padding
.
Cada elemento multimedia debe contener un atributo Mime
. Los elementos multimedia secundarios deben
también contienen atributos de longitud.
Los elementos multimedia secuenciales pueden compartir datos de recursos dentro del contenedor de archivos. El
El primer elemento multimedia determina la ubicación del recurso en el contenedor de archivos.
y los siguientes elementos multimedia compartidos tienen Length
establecido en 0 en caso de que el elemento
los datos de recursos son en sí mismos un contenedor.
La ubicación de los recursos de los elementos multimedia en el contenedor se determina mediante la suma
los valores de Length
de los recursos del elemento secundario anteriores a la longitud de
la codificación de la imagen principal más Padding
si se especifica
Nombre del atributo |
Tipo |
Descripción |
|
|
Obligatorio. Es una cadena simple que indica el tipo de MIME del elemento multimedia del contenedor. |
|
|
Obligatorio. Es una cadena simple que indica el significado específico de la aplicación del elemento multimedia. Consulta la sección Valores semánticos de los elementos para obtener una definición. |
|
|
Obligatorio para los elementos multimedia secundarios, incluido el contenedor de video. La longitud del número entero positivo en bytes del elemento. Se espera que los elementos multimedia tengan su forma original, sin codificación. El valor de longitud es la longitud real de los bytes en el archivo. La longitud 0 en los elementos multimedia secundarios indica que el recurso del elemento multimedia se comparte con el elemento multimedia anterior. Se espera que la longitud sea de 0 en un elemento multimedia principal. |
|
|
[Fotos en movimiento basadas en JPEG] Opcional para el elemento multimedia principal. Cadena simple que contiene un número entero positivo en bytes de cantidad adicional relleno entre el final de la imagen primaria codificada y el inicio de la elemento multimedia siguiente. [Fotos en movimiento basadas en HEIC/AVIF] Obligatorio para el elemento multimedia principal. Debe tener un valor igual a 8, el longitud de encabezado de la Foto en movimiento Cuadro de datos de video ("mpvd") |
Elemento:Valores de tipo MIME
El atributo Item:Mime
define el tipo de MIME de cada elemento multimedia.
Valor |
Descripción |
|
Imagen JPEG |
|
Imagen HEIC |
|
Imagen AVIF |
|
Contenedor MP4 |
|
Contenedor MOV |
Elemento:Valores semánticos
El atributo Item:Semantic
define el significado específico de la aplicación de cada uno
elemento multimedia en el directorio del contenedor.
|
Descripción |
|
Indica que el elemento multimedia es la imagen lista para mostrar principal del contenedor. Una foto en movimiento debe incluir un solo elemento con esta semántica. |
|
Indica que el elemento multimedia es el contenedor de video. Una foto en movimiento debe incluir un solo elemento con esta semántica. La ubicación de este elemento multimedia debe estar al final del archivo. No se pueden colocar otros bytes después de que terminan los bytes de este elemento multimedia. |
Fotos en movimiento con una imagen principal Ultra HDR
Según las reglas de valor semántica del elemento definidas en esta especificación y en
la especificación para las imágenes Ultra HDR
las fotos en movimiento con una imagen principal Ultra HDR también deben incluir un elemento multimedia con
una semántica de elemento de "GainMap"
. Además, los escritores que codifican fotos en movimiento deben colocar
el elemento de getmap antes del elemento de video.
Comportamiento específico de la imagen ISOBMFF
Fotos en movimiento con Basado en ISOBMFF imágenes (p.ej., imágenes HEIC y AVIF) deben tener una estructura que termina con un "Datos de video y foto en movimiento" de nivel superior. caja, descrito utilizando la semántica del Lenguaje de descripción sintáctico definido en Cláusula 8 de la norma 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[];
}
en la que los "datos" contiene todos los bytes de video. El valor especial de "0" no se permite para el tamaño del cuadro de datos de video y foto en movimiento. (Consulta ISO/IEC 14496-12:2015: 4.2 para la definición de un tamaño de clase que extiende Box).
El XMP de la imagen ISOBMFF también debe definir el relleno del elemento multimedia principal. valor del atributo sea igual al tamaño en bytes del video de la foto en movimiento el encabezado de Data Box, que son los encabezados de tamaño y nombre.
Consulta la Figura 1 en la que se ilustra la estructura de esta caja para ver un ejemplo de un movimiento basado en HEIC. foto:
Figura 1: Ilustración de los cuadros de nivel superior de una imagen HEIC de muestra dentro un único archivo de fotos en movimiento HEIC. Ten en cuenta que el orden de los cuadros es principalmente para solo ilustración (consulte los estándares relevantes sobre cómo crear archivos HEIF o de video); pero el "mpvd" debe venir luego de todas las declaraciones de tu archivo de imagen.
Contenidos del contenedor de video
El archivo contenedor de video que se añade a la imagen principal debe incluir en al menos una pista de video principal. Esta pista es obligatoria y contiene un video codificado en AVC HEVC o AV1 El la resolución del fotograma principal del video no está definida. El espacio de color del video, transfiere y la profundidad de bits puede variar. Por ejemplo, los videos SDR pueden tener una configuración profundidad, espacio de color BT.709 y una función de transferencia sRGB. O bien, los videos HDR pueden Deben tener una profundidad de bits de 10 bits, un espacio de color BT.2100 y una transferencia HLG o PQ. junto con metadatos HDR y pistas de metadatos.
El archivo contenedor de video puede contener una resolución secundaria opcional de mayor resolución Pista de video. Los lectores deben usar su contenido para mostrar sustituciones para el elemento imagen estática principal codificada en la imagen JPEG o HEIC. Esta pista puede contener video con velocidad de fotogramas baja codificado en AVC, HEVC o AV1. El fotograma de video secundario la resolución no está definida.
Se espera que todos los fotogramas de la pista de video secundario tengan los fotogramas correspondientes en la pista de video principal. Cada par de direcciones IP Los fotogramas de las pistas de video principales y secundarias deben tener la misma presentación. y marcas de tiempo. Si hay un fotograma de seguimiento secundario sin el principal correspondiente fotograma del segmento, los usuarios pueden seleccionar el fotograma principal con el que coincide con la marca de tiempo de la presentación como la miniatura representativa de la pista de video secundaria.
El archivo de contenedor de video puede contener un audio mono o estéreo opcional de 16 bits. pista a 44 kHz, 48 kHz o 96 kHz codificada en AAC. Los lectores deben presentar esto cuando se muestra la pista de video principal.
La pista de video secundaria, si está presente, siempre debe ir después de la principal. Pista de video. No existen otras restricciones de orden con respecto a otras pistas. El La pista de video principal debe tener un índice de pista inferior al de las pistas de video secundarias. Pista de video. Es decir, si la pista de video principal tiene la pista número 2, cualquier la pista de video secundaria debe tener un número de pista superior o igual a 3.
Seguimiento de metadatos de video con puntuación de inteligencia artificial
Los escritores pueden agregar opcionalmente una pista de metadatos al archivo contenedor de video con una escribe “meta”. La pista de metadatos debe tener exactamente una muestra que contenga un Flujo de bytes en el formato descrito en “Sintaxis”
Si la pista de metadatos está presente, la entrada de la tabla con la descripción de ejemplo para el de seguimiento (es decir, el cuadro "stsd" ubicado en "mdia.minf.stbl.stsd" en relación con el “trak” debe contener un solo átomo que indique un ejemplo de metadatos de texto (por ejemplo, un cuadro "mett"). The "mett" el cuadro debe tener una cadena de tipo MIME igual por “application/motionphoto-image-meta”.
Sintaxis
Si se define esta pista de metadatos, su contenido debe consistir en un flujo de bytes.
conforme a esta especificación de MotionPhotoMetadataDescriptor
, que se describe
aquí con la semántica del lenguaje de descripción sintáctico definido en
Cláusula 8 de la norma 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