Formato file MP4 con estensione per tracce ausiliarie (MP4-AT) 0.9

Il formato file MP4-AT supporta l'archiviazione di tracce ausiliarie utili per il montaggio e la composizione post-acquisizione (ad esempio una traccia video della mappa di profondità) insieme ai dati multimediali riproducibili in una struttura ISOBMFF/MP4.

Lo scopo del formato è memorizzare le tracce ausiliarie in modo che non siano visibili ai client che non implementano questa specifica. In questo modo, i client non possono interpretare le tracce ausiliarie come dati riproducibili.

Dipendenze

Di seguito sono riportati i riferimenti normativi per questa specifica:

Introduzione

L'uso di "DEVE", "NON DEVE", "OBBLIGATORIO", "DEVE", "NON DEVE", "CONSIGLIATO", "PUÒ" e "FACOLTATIVO" è conforme allo standard IETF definito in RFC2119.

Formato file MP4-AT

Il formato file MP4-AT è costituito da tracce principali e tracce ausiliarie per consentire varie operazioni di modifica. Le tracce principali (ad esempio una traccia video a cui è stato applicato un effetto bokeh) vengono scritte nel file MP4 come di consueto, mentre le tracce ausiliarie vengono scritte in un file MP4 con tracce ausiliarie. MP4 con tracce ausiliarie è un altro contenitore conforme allo standard MP4 e viene inserito nella casella axte(Estensione tracce ausiliarie). È consigliabile che la casella axte sia l'ultima del file, in modo da poter rimuovere facilmente i dati ausiliari troncando il file.

Questo formato è compatibile con le versioni precedenti: i lettori che non supportano il resto di questo formato leggeranno e riprodurranno le tracce video principali al caricamento del file.

Diagramma di flusso che mostra la disposizione degli elementi in un file MP4-AT

Il file contiene una casella moov.meta con un gestore mdta che contiene i seguenti metadati. I metadati possono essere visualizzati in qualsiasi ordine.

Chiave dei metadati

Indicatore di tipo

Valore

auxiliary.tracks.offset

78 (numero intero non firmato a 64 bit big endian)

L'offset del file (in byte) della casella axte

auxiliary.tracks.length

78 (numero intero non firmato a 64 bit big endian)

La lunghezza (in byte) della casella axte

Scatola per l'estensione dei binari ausiliari (axte)

Sintassi

La casella axte è descritta utilizzando la semantica della casella definita in ISO/IEC 14496-12:2022: 4.2

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

dove il campo dati contiene le tracce ausiliarie MP4.

Payload

Il payload della casella axte è un file MP4 con tracce ausiliarie. Il file MP4 con le tracce ausiliarie ha la solita struttura MP4.

Diagramma a linee che mostra la disposizione degli elementi nei canali ausiliari MP4

Il file MP4 delle tracce ausiliarie contiene metadati di esempio per tutte le tracce ausiliarie. Tutti i payload dei sample delle tracce ausiliarie devono essere memorizzati nel campo mdat del file MP4 delle tracce ausiliarie o nel campo mdat del file MP4 esterno (ma non in entrambi).

Nel primo caso, auxiliary.tracks.interleaved deve essere impostato su 0 (vedi "Metadati statici" di seguito) e gli offset dei campioni nella casella axte.moov sono relativi all'inizio del file MP4 delle tracce ausiliarie. In questo modo, il file MP4 con tracce ausiliarie è autonomo, il che significa che può essere letto autonomamente senza alcun riferimento all'MP4 esterno.

In quest'ultimo caso, auxiliary.tracks.interleaved deve essere impostato su 1 (vedi "Metadati statici" di seguito) e gli offset dei campioni nella casella axte.moov sono relativi all'inizio del file e i payload dei campioni delle tracce principali e ausiliarie possono essere interlacciati. In questo caso, la casella axte.mdat può essere assente.

Metadati statici

Il file MP4 con tracce ausiliarie contiene una casella moov.meta con un handler mdta che contiene i seguenti metadati. I metadati possono essere visualizzati in qualsiasi ordine.

Chiave dei metadati

Indicatore di tipo

Valore

(Facoltativo) auxiliary.tracks.interleaved

75 (numero intero senza segno a 8 bit)

0: indica che i campioni non sono interlacciati e si trovano nella casella axte.mdat

1: indica che i sample sono interlacciati nella casella mdat della traccia video principale

Tutti gli altri valori sono riservati e non devono essere utilizzati.

L'assenza di questi metadati indica il valore predefinito 0.

auxiliary.tracks.map

0 (riservato)

Formato binario:

  • Versione 1 byte = 1
  • Numero di tracce di 1 byte = n
  • Tipi di monitoraggio di n byte dal seguente insieme
    • 0 = Video nitido
    • 1 = Video con profondità (lineare)
    • 2 = Video con profondità (inverso)
    • 3 = Metadati relativi alla profondità temporizzata
    • 4 = Video semitrasparente
    • 5-127 = Riservato per uso futuro
    • 128-255 = Tipi di canali personalizzati

L'ordine dei tipi di canali in auxiliary.tracks.map indica il loro ordine nel payload del file MP4 dei canali ausiliari.

Tipi di canali ausiliari

Il file MP4 con le tracce ausiliarie può contenere le seguenti tracce video e di metadati utili per il montaggio.

Traccia video nitida

Un video a piena risoluzione senza effetti modificabili applicati. La traccia video potrebbe essere memorizzata a una risoluzione diversa rispetto alla traccia video principale. La traccia video nitida può utilizzare qualsiasi codec video comune ed essere in formato standard o HDR.

Traccia video con profondità

La traccia video di profondità fornisce le informazioni sulla profondità codificate come video in scala di grigi standard. Questo consente di decodificare e codificare le tracce di profondità su dispositivi che non supportano la decodifica o la codifica speciale per la profondità. La traccia video con profondità può utilizzare H.264/AVC, H.265/HEVC, VP9, AV1 o qualsiasi altro codec video comune. La traccia video con profondità può essere a 8 o 10 bit e con codifica lineare o inversa (consulta la specifica Dinamic Depth 1.0).

Canale dei metadati della profondità con temporizzazione

La traccia dei metadati relativi alla profondità temporizzata contiene valori di normalizzazione per calcolare la profondità e una tabella focale che può essere utilizzata per calcolare il raggio di sfocatura per un effetto bokeh.

Tipo MIME di esempio

application/x-depth-metadata

Sintassi di esempio

Formato binario (tutti gli interi little endian):

  • Distanza ravvicinata (virgola mobile a 16 bit)
  • Distanza lontana (float a 16 bit)
  • Conteggio delle voci della tabella principale (int a 16 bit)
  • Voce della tabella focale
    • Distanza di ingresso (trapezio a 16 bit)
    • Raggio di ingresso (virgola mobile a 16 bit)
Traccia video traslucida

Una traccia video che memorizza il valore alpha (trasparenza) per ogni pixel nel frame corrispondente. Un valore minimo indica completamente trasparente, mentre il valore massimo indica opacità completa. I valori intermedi rappresentano livelli diversi di traslucenza su una scala lineare e la composizione utilizza la modalità di miscelazione normale con valori di colore non premoltiplicati. Analogamente alla traccia video in 3D, anche questa traccia deve essere codificata come video in scala di grigi standard.

Esempi di casi d'uso

  • Memorizzare un video bokeh visualizzato in una traccia principale, con tracce video ausiliarie per i dati a colori nitidi originali (pre-sfocatura) e una mappa di profondità, nonché una traccia di metadati temporizzata ausiliaria con metadati di profondità che riflettono il punto di messa a fuoco in ogni fotogramma. Le tracce ausiliarie possono essere utilizzate in un editor video per modificare l'oggetto in primo piano e eseguire nuovamente il rendering di una traccia video con effetto bokeh di alta qualità.

  • Memorizzazione di un video "adesivo" traslucido pre-renderizzato, ad esempio un video di emoji animate su sfondo bianco in una traccia video principale, con una traccia video ausiliaria contenente una mappa alfa. La traccia ausiliaria può essere utilizzata da un compositore per fondere l'adesivo con uno sfondo utilizzando le informazioni sulla trasparenza della traccia ausiliaria.