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:
- Parole chiave da utilizzare nelle RFC per indicare i livelli di requisito
- Formato file multimediale ISO Box ISO/IEC 14496-12:2022 (ISOBMFF/MP4)
- ISO/IEC 14496-10:2022 Codifica di oggetti audiovisivi Parte 10: Codifica video avanzata (AVC)
- ISO/IEC 23008-2:2023 High efficiency coding and media delivery in heterogeneous environments Part 2: High efficiency video coding (HEVC)
- Codec video VP9 (VP9)
- Specifica del flusso di bit e della procedura di decodifica AV1 (AV1)
- Specifiche della profondità di campo dinamica 1.0
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.
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 |
|
78 (numero intero non firmato a 64 bit big endian) |
L'offset del file (in byte) della casella |
|
78 (numero intero non firmato a 64 bit big endian) |
La lunghezza (in byte) della casella |
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.
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) |
75 (numero intero senza segno a 8 bit) |
0: indica che i campioni non sono interlacciati e si trovano nella casella 1: indica che i sample sono interlacciati nella casella Tutti gli altri valori sono riservati e non devono essere utilizzati. L'assenza di questi metadati indica il valore predefinito 0. |
|
0 (riservato) |
Formato binario:
|
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 |
|
Sintassi di esempio |
Formato binario (tutti gli interi little endian):
|
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.