Le format de fichier MP4-AT permet de stocker des pistes auxiliaires utiles pour le montage et la composition post-capture (par exemple, une piste vidéo de carte de profondeur) avec des données multimédias lisibles dans une structure ISOBMFF/MP4.
L'objectif du format est de stocker des pistes auxiliaires de sorte qu'elles soient masquées pour les clients qui n'implémentent pas cette spécification. Cela empêche les clients d'interpréter les pistes auxiliaires comme des données lisibles.
Dépendances
Voici les références normatives de cette spécification:
- Mots clés à utiliser dans les RFC pour indiquer les niveaux d'exigences
- Format de fichier multimédia ISO Box ISO/CEI 14496-12:2022 (ISOBMFF/MP4)
- ISO/IEC 14496-10:2022 Codage des objets audiovisuels, partie 10: codage vidéo avancé (AVC)
- ISO/IEC 23008-2:2023 Codage haute efficacité et diffusion multimédia dans des environnements hétérogènes, partie 2: codage vidéo haute efficacité (HEVC)
- Codecs vidéo VP9 (VP9)
- Spécification du flux de bits et du processus de décodage AV1 (AV1)
- Spécifications de la profondeur dynamique 1.0
Introduction
L'utilisation des mots clés "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" et "OPTIONAL" est conforme à la norme IETF définie dans la RFC 2119.
Format de fichier MP4-AT
Le format de fichier MP4-AT se compose de pistes principales et de pistes auxiliaires pour permettre diverses opérations de montage. Les pistes principales (par exemple, une piste vidéo à laquelle un effet bokeh a été appliqué) sont écrites dans le fichier MP4 comme d'habitude, tandis que les pistes auxiliaires sont écrites dans un fichier MP4 de pistes auxiliaires.
Le MP4 à pistes auxiliaires est un autre conteneur compatible avec le format MP4. Il est placé dans la section axte
(Auxiliary Tracks Extension) (Extension des pistes auxiliaires). Il est recommandé que la case axte
soit la dernière du fichier, ce qui permet de supprimer facilement les données auxiliaires en tronquant le fichier.
Ce format est rétrocompatible: les lecteurs qui ne sont pas compatibles avec le reste de ce format lisent et lisent les pistes vidéo principales lors du chargement du fichier.
Le fichier contient une zone moov.meta
avec un gestionnaire mdta
qui contient les métadonnées suivantes. Les métadonnées peuvent apparaître dans n'importe quel ordre.
Clé de métadonnées |
Indicateur de type |
Valeur |
|
78 (entier non signé de 64 bits en big endian) |
Décalage de fichier (en octets) de la zone |
|
78 (entier non signé de 64 bits en big endian) |
Longueur (en octets) de la zone |
Boîte "Extension des voies auxiliaires (axte)"
Syntaxe
La zone axte
est décrite à l'aide de la sémantique de la zone définie dans la section 4.2 de la norme ISO/CEI 14496-12:2022.
aligned(8) class AuxiliaryTracksExtensionBox extends Box('axte') {
bit(8) data[];
}
où le champ de données contient les pistes auxiliaires MP4.
Charge utile
La charge utile de la section axte
est un MP4 de pistes auxiliaires.
Le MP4 des pistes auxiliaires présente la structure MP4 habituelle.
Le fichier Auxiliary Tracks MP4 contient des exemples de métadonnées pour tous les titres auxiliaires.
Toutes les charges utiles d'échantillons de pistes auxiliaires doivent être stockées dans la zone mdat
du MP4 de pistes auxiliaires ou dans la zone mdat
du MP4 externe (mais pas les deux).
Dans le premier cas, auxiliary.tracks.interleaved
doit être défini sur 0 (voir la section "Métadonnées statiques" ci-dessous), et les décalages d'échantillon dans le champ axte.moov
sont relatifs au début des pistes auxiliaires MP4. Cela rend le MP4 de pistes auxiliaires autonome, ce qui signifie qu'il peut être lu de manière autonome, sans aucune référence au MP4 externe.
Dans ce dernier cas, auxiliary.tracks.interleaved
doit être défini sur 1 (voir la section "Métadonnées statiques" ci-dessous). Les décalages d'échantillon dans la zone axte.moov
sont relatifs au début du fichier, et les charges utiles d'échantillon des pistes principales et auxiliaires peuvent être entrelacées.
Dans ce cas, la zone axte.mdat
peut être absente.
Métadonnées statiques
Le MP4 de pistes auxiliaires contient une zone moov.meta
avec un gestionnaire mdta
contenant les métadonnées suivantes. Les métadonnées peuvent apparaître dans n'importe quel ordre.
Clé de métadonnées |
Indicateur de type |
Valeur |
(Facultatif) |
75 (entier non signé 8 bits) |
0: indique que les échantillons ne sont pas entrelacés et qu'ils se trouvent dans la zone 1: indique que les échantillons sont entrelacés dans la zone Toutes les autres valeurs sont réservées et ne doivent pas être utilisées. L'absence de ces métadonnées indique la valeur par défaut 0. |
|
0 (réservé) |
Format binaire:
|
L'ordre des types de pistes dans auxiliary.tracks.map
indique leur ordre dans la charge utile des pistes auxiliaires MP4.
Types de canaux auxiliaires
Les pistes MP4 auxiliaires peuvent contenir les pistes vidéo et de métadonnées suivantes, qui sont utiles pour le montage.
Piste vidéo Sharp
Vidéo en résolution maximale sans effets modifiables appliqués. La piste vidéo peut être stockée à une résolution différente de celle de la piste vidéo principale. La piste vidéo nette peut utiliser n'importe quel codec vidéo courant et peut être en plage dynamique standard ou élevée.
Piste vidéo avec profondeur
La piste vidéo de profondeur fournit les informations de profondeur encodées en tant que vidéo en niveaux de gris standard. Cela permet de décoder et d'encoder des pistes de profondeur sur des appareils qui ne sont pas compatibles avec le décodage ou l'encodage spécial de la profondeur. La piste vidéo de profondeur peut utiliser H.264/AVC, H.265/HEVC, VP9, AV1 ou tout autre codec vidéo courant. La piste vidéo de profondeur peut être en 8 bits ou 10 bits, et encodée de manière linéaire ou inverse (reportez-vous à la spécification de la profondeur dynamique 1.0).
Piste de métadonnées de profondeur temporelle
La piste de métadonnées de profondeur temporelle contient des valeurs de normalisation pour calculer la profondeur et un tableau de focale qui peut être utilisé pour calculer le rayon de flou pour un effet bokeh.
Exemple de type MIME |
|
Exemple de syntaxe |
Format binaire (tous les entiers en little-endian):
|
Piste vidéo translucide
Piste vidéo stockant la valeur alpha (transparence) pour chaque pixel du frame correspondant. Une valeur minimale indique une transparence totale, tandis qu'une valeur maximale indique une opacité totale. Les valeurs intermédiaires représentent différents niveaux de transparence sur une échelle linéaire, et la composition utilise le mode de fusion normal avec des valeurs de couleur non prémultipliées. Comme la piste vidéo de profondeur, cette piste doit également être encodée en tant que vidéo en niveaux de gris standard.
Exemples de cas d'utilisation
Stocker une vidéo bokeh lue dans une piste principale, avec des pistes vidéo auxiliaires pour les données de couleur nettes d'origine (avant floutage) et une carte de profondeur, ainsi qu'une piste de métadonnées temporelles auxiliaire avec des métadonnées de profondeur reflétant le point de mise au point à chaque frame. Les pistes auxiliaires peuvent ensuite être utilisées dans un logiciel de montage vidéo pour modifier le sujet au premier plan et recréer une piste vidéo bokeh de haute qualité.
Stocker une vidéo d 'autocollant translucide pré-rendue, par exemple une vidéo d'emoji animé sur un fond blanc dans une piste vidéo principale, avec une piste vidéo auxiliaire contenant une carte alpha. Le composant peut ensuite utiliser la piste auxiliaire pour mélanger l'autocollant avec un arrière-plan à l'aide des informations de transparence de la piste auxiliaire.