Formato de archivo MP4 con extensión de pistas auxiliares (MP4-AT) 0.9

El formato de archivo MP4-AT admite el almacenamiento de pistas auxiliares que son útiles para la edición y composición posteriores a la captura (por ejemplo, una pista de video de mapa de profundidad) junto con datos multimedia reproducibles en una estructura ISOBMFF/MP4.

El objetivo del formato es almacenar pistas auxiliares de modo que estas se oculten a los clientes que no implementen esta especificación. Esto evita que los clientes interpreten las pistas auxiliares como datos reproducibles.

Dependencias

Las siguientes son referencias normativas para esta especificación:

Introducción

El uso de “DEBES”, “NO DEBES”, “OBLIGATORIO”, “DEBES”, “NO DEBES”, “RECOMENDADO”, “PUEDES” y “OPCIONAL” se realiza de acuerdo con el estándar de IETF definido en RFC2119.

Formato de archivo MP4-AT

El formato de archivo MP4-AT consta de pistas principales y auxiliares para permitir varias operaciones de edición. Las pistas principales (por ejemplo, una pista de video a la que se le aplicó un efecto bokeh) se escriben en el archivo MP4 como de costumbre, mientras que las pistas auxiliares se escriben en un MP4 de pistas auxiliares. El MP4 de pistas auxiliares es otro contenedor compatible con MP4 y se coloca dentro del cuadro axte(extensión de pistas auxiliares). Se recomienda que el cuadro axte sea el último del archivo, lo que facilita la eliminación de datos auxiliares truncando el archivo.

Este formato es retrocompatible: los reproductores que no admiten el resto de este formato leerán y reproducirán las pistas de video principales cuando se cargue el archivo.

Diagrama de líneas que muestra la disposición de los elementos en un archivo MP4-AT

El archivo tiene un cuadro moov.meta con el controlador mdta que contiene los siguientes metadatos. Los metadatos pueden aparecer en cualquier orden.

Clave de metadatos

Indicador de tipo

Valor

auxiliary.tracks.offset

78 (número entero de 64 bits sin firma de big endian)

Es el desplazamiento del archivo (en bytes) de la casilla axte.

auxiliary.tracks.length

78 (número entero de 64 bits sin firma de big endian)

Es la longitud (en bytes) del cuadro axte.

Cuadro de extensión de pistas auxiliares (axte)

Sintaxis

El cuadro axte se describe con la semántica del cuadro definida en ISO/IEC 14496-12:2022: 4.2.

aligned(8) class AuxiliaryTracksExtensionBox extends Box('axte') {
  bit(8) data[];
}

donde el campo de datos contiene el MP4 de pistas auxiliares.

Carga útil

La carga útil del cuadro axte es un MP4 de pistas auxiliares. El MP4 de pistas auxiliares tiene la estructura de MP4 habitual.

Diagrama de líneas que muestra la disposición de los elementos en el MP4 de pistas auxiliares

El archivo Auxiliary Tracks MP4 contiene metadatos de muestra para todas las pistas auxiliares. Todas las cargas útiles de muestra de la pista auxiliar deben almacenarse en la caja mdat del MP4 de pistas auxiliares o en la caja mdat del MP4 externo (pero no en ambas).

En el primer caso, auxiliary.tracks.interleaved se debe establecer en 0 (consulta "Metadatos estáticos" a continuación) y las compensaciones de muestra en el cuadro axte.moov son relativas al comienzo de los MP4 de pistas auxiliares. Esto hace que el MP4 de pistas auxiliares sea independiente, lo que significa que el MP4 de pistas auxiliares se puede leer de forma independiente sin ninguna referencia al MP4 externo.

En el último caso, auxiliary.tracks.interleaved se debe establecer en 1 (consulta "Metadatos estáticos" a continuación) y las compensaciones de muestra en el cuadro axte.moov son relativas al inicio del archivo, y las cargas útiles de muestra de las pistas principales y auxiliares pueden estar intercaladas. En este caso, el cuadro axte.mdat puede estar ausente.

Metadatos estáticos

El MP4 de pistas auxiliares contiene un cuadro moov.meta con el controlador mdta que contiene los siguientes metadatos. Los metadatos pueden aparecer en cualquier orden.

Clave de metadatos

Indicador de tipo

Valor

(Opcional) auxiliary.tracks.interleaved

75 (número entero sin signo de 8 bits)

0: Indica que las muestras no están intercaladas y se encuentran en el cuadro axte.mdat.

1: Indica que los samples están intercalados en el cuadro mdat de la pista de video principal.

Todos los demás valores están reservados y no se deben usar.

La ausencia de estos metadatos indica el valor predeterminado 0.

auxiliary.tracks.map

0 (reservado)

Formato binario:

  • Versión de 1 byte = 1
  • Recuento de pistas de 1 byte = n
  • n bytes de tipos de segmentos del siguiente conjunto
    • 0 = Video nítido
    • 1 = Video de profundidad (lineal)
    • 2 = Video de profundidad (inverso)
    • 3 = Metadatos de profundidad sincronizada
    • 4 = Video translúcido
    • 5 a 127 = Reservado para uso futuro
    • 128-255 = Tipos de segmentos personalizados

El orden de los tipos de pistas en auxiliary.tracks.map indica su orden en la carga útil de MP4 de pistas auxiliares.

Tipos de segmentos auxiliares

Los MP4 de pistas auxiliares pueden contener las siguientes pistas de video y metadatos útiles para la edición.

Pista de video nítida

Un video en resolución completa sin efectos editables aplicados. Es posible que la pista de video se almacene en una resolución diferente a la de la pista de video principal. La pista de video nítida puede usar cualquier códec de video común y puede estar en rango dinámico estándar o alto.

Pista de video de profundidad

La pista de video de profundidad proporciona la información de profundidad codificada como un video en escala de grises estándar. Esto permite decodificar y codificar pistas de profundidad en dispositivos que no tienen compatibilidad especial con la decodificación o codificación de profundidad. La pista de video de profundidad puede usar H.264/AVC, H.265/HEVC, VP9, AV1 o cualquier otro códec de video común. La pista de video de profundidad puede ser de 8 bits o 10 bits, y estar codificada de forma lineal o inversa (consulta las especificaciones de profundidad dinámica 1.0).

Pista de metadatos de profundidad con temporización

La pista de metadatos de profundidad con temporización contiene valores de normalización para calcular la profundidad y una tabla focal que se puede usar para calcular el radio de desenfoque para un efecto bokeh.

Tipo de MIME de muestra

application/x-depth-metadata

Sintaxis de muestra

Formato binario (todos los números enteros son little endian):

  • Distancia cercana (número de punto flotante de 16 bits)
  • Distancia lejana (número de punto flotante de 16 bits)
  • Recuento de entradas de la tabla focal (int de 16 bits)
  • Entrada de la tabla focal
    • Distancia de entrada (número de punto flotante de 16 bits)
    • Radio de entrada (número de punto flotante de 16 bits)
Pista de video translúcida

Es una pista de video que almacena el valor alfa (transparencia) de cada píxel en el fotograma correspondiente. Un valor mínimo indica que es completamente transparente, mientras que el valor máximo indica que es completamente opaco. Los valores intermedios representan diferentes niveles de translucidez en una escala lineal, y la composición usa el modo de combinación normal con valores de color no multiplicados previamente. Al igual que la pista de video de profundidad, esta pista también debe codificarse como un video en escala de grises estándar.

Ejemplos de casos de uso

  • Almacena un video de bokeh renderizado y reproducible en una pista principal, con pistas de video auxiliares para los datos de color nítidos originales (antes del desenfoque) y un mapa de profundidad, y una pista de metadatos de tiempo auxiliar con metadatos de profundidad que reflejan el punto de enfoque en cada fotograma. Las pistas auxiliares se pueden usar en un editor de video para modificar el sujeto enfocado y volver a renderizar una pista de video de bokeh de alta calidad.

  • Almacenar un video de "sticker" translúcido renderizado previamente, por ejemplo, un video de emoji animado sobre un fondo blanco en una pista de video principal, con una pista de video auxiliar que contiene un mapa alfa Luego, un compositor puede usar la pista auxiliar para combinar la calcomanía con un fondo usando la información de transparencia de la pista auxiliar.