Format de fichier MP4 avec extension de pistes auxiliaires (MP4-AT) 0.9

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:

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.

Schéma illustrant la disposition des éléments dans un fichier MP4-AT

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

auxiliary.tracks.offset

78 (entier non signé de 64 bits en big endian)

Décalage de fichier (en octets) de la zone axte

auxiliary.tracks.length

78 (entier non signé de 64 bits en big endian)

Longueur (en octets) de la zone axte

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.

Schéma illustrant l'organisation des éléments dans le fichier MP4 des pistes auxiliaires

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) auxiliary.tracks.interleaved

75 (entier non signé 8 bits)

0: indique que les échantillons ne sont pas entrelacés et qu'ils se trouvent dans la zone axte.mdat

1: indique que les échantillons sont entrelacés dans la zone mdat de la piste vidéo principale

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.

auxiliary.tracks.map

0 (réservé)

Format binaire:

  • Version 1 octet = 1
  • Nombre de pistes de 1 octet = n
  • n octets de types de canaux de l'ensemble suivant
    • 0 = Vidéo nette
    • 1 = Vidéo avec profondeur (linéaire)
    • 2 = Vidéo avec profondeur (inverse)
    • 3 = Métadonnées de profondeur temporelle
    • 4 = Vidéo translucide
    • 5 à 127 : réservé pour une utilisation ultérieure
    • 128 à 255 = types de canaux personnalisés

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

application/x-depth-metadata

Exemple de syntaxe

Format binaire (tous les entiers en little-endian):

  • Distance proche (flottant 16 bits)
  • Distance lointaine (valeur à virgule flottante 16 bits)
  • Nombre d'entrées de la table de focalisation (entier 16 bits)
  • Élément de table focal
    • Distance d'entrée (nombre à virgule flottante 16 bits)
    • Rayon d'entrée (float 16 bits)
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.