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:
- Palabras clave para usar en RFC para indicar niveles de requisitos
- ISO/IEC 14496-12:2022 ISO Box media file format (ISOBMFF/MP4)
- ISO/IEC 14496-10:2022 Codificación de objetos audiovisuales, Parte 10: Codificación de video avanzada (AVC)
- ISO/IEC 23008-2:2023 Codificación de alta eficiencia y entrega de contenido multimedia en entornos heterogéneos, Parte 2: Codificación de video de alta eficiencia (HEVC)
- Códecs de video VP9 (VP9)
- Especificación del proceso de decodificación y flujo de bits de AV1 (AV1)
- Especificación de profundidad dinámica 1.0
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.
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 |
|
78 (número entero de 64 bits sin firma de big endian) |
Es el desplazamiento del archivo (en bytes) de la casilla |
|
78 (número entero de 64 bits sin firma de big endian) |
Es la longitud (en bytes) del cuadro |
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.
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) |
75 (número entero sin signo de 8 bits) |
0: Indica que las muestras no están intercaladas y se encuentran en el cuadro 1: Indica que los samples están intercalados en el cuadro Todos los demás valores están reservados y no se deben usar. La ausencia de estos metadatos indica el valor predeterminado 0. |
|
0 (reservado) |
Formato binario:
|
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 |
|
Sintaxis de muestra |
Formato binario (todos los números enteros son little endian):
|
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.