Format pliku MP4 z rozszerzeniem Auxiliary Tracks (MP4-AT) 0.9

Format pliku MP4-AT umożliwia przechowywanie ścieżek pomocniczych, które są przydatne do edycji i kompozycji po nagraniu (np. ścieżka wideo mapy głębi) obok danych mediów do odtwarzania w strukturze ISOBMFF/MP4.

Celem tego formatu jest przechowywanie ścieżek pomocniczych w taki sposób, aby były one ukryte przed klientami, którzy nie stosują tej specyfikacji. Zapobiega to interpretowaniu ścieżek pomocniczych jako danych do odtworzenia.

Zależności

W przypadku tej specyfikacji obowiązują następujące dokumenty:

Wprowadzenie

Użycie słów „MUST” (musi), „MUST NOT” (nie musi), „REQUIRED” (wymagane), „SHOULD” (zalecane), „SHOULD NOT” (nie zalecane), „RECOMMENDED” (zalecane) i „OPTIONAL” (opcjonalne) jest zgodne ze standardem IETF określonym w RFC2119.

Format pliku MP4-AT

Format pliku MP4-AT składa się z torów głównych i pomocniczych, które umożliwiają wykonywanie różnych operacji edycji. Główne ścieżki (np. ścieżka wideo, do której zastosowano efekt bokeh) są zapisywane w pliku MP4 jak zwykle, a ścieżki pomocnicze – w pliku MP4 ze ścieżkami pomocniczymi. Plik MP4 z ścieżkami pomocniczymi to kolejny kontener zgodny z MP4, który jest umieszczony w polu axte(rozszerzenie ścieżek pomocniczych). Pole axte powinno być ostatnim polem w pliku, co ułatwia usuwanie danych pomocniczych przez obcięcie pliku.

Ten format jest zgodny wstecz: odtwarzacze, które nie obsługują reszty tego formatu, będą odczytywać i odtwarzać główne ścieżki wideo podczas wczytywania pliku.

Schemat liniowy przedstawiający rozmieszczenie elementów w pliku MP4-AT

Plik zawiera pole moov.meta z elementem mdta, który zawiera te metadane: Metadane mogą się wyświetlać w dowolnej kolejności.

Klucz metadanych

Wskaźnik typu

Wartość

auxiliary.tracks.offset

78 (64-bitowa liczba całkowita bez znaku w systemie big endian)

Odsunięcie pliku (w bajtach) do pola axte

auxiliary.tracks.length

78 (64-bitowa liczba całkowita bez znaku w systemie big endian)

Długość (w bajtach) pola axte

Pole dodatkowego rozszerzenia ścieżek (axte)

Składnia

Pole axte jest opisane za pomocą semantyki pola zdefiniowanej w ISO/IEC 14496-12:2022: 4.2

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

gdzie pole danych zawiera ścieżki pomocnicze w formacie MP4.

Ładunek

Treść axte to plik MP4 z ścieżkami pomocniczymi. Plik MP4 z ścieżkami pomocniczymi ma standardową strukturę MP4.

Schemat liniowy przedstawiający rozmieszczenie elementów w pliku MP4 z ścieżkami pomocniczymi

Plik MP4 z ścieżkami pomocniczymi zawiera przykładowe metadane wszystkich ścieżek pomocniczych. Wszystkie ładunki próbek ścieżek pomocniczych muszą być przechowywane w polu mdat ścieżek pomocniczych w formacie MP4 lub w polu mdat zewnętrznego pliku MP4 (ale nie w obu).

W pierwszym przypadku parametr auxiliary.tracks.interleaved musi być ustawiony na 0 (patrz „Metadane statyczne” poniżej), a odchyłki próbki w polu axte.moov są względne względem początku ścieżek pomocniczych MP4. Dzięki temu plik MP4 z ścieżkami pomocniczymi jest samodzielny, co oznacza, że można go odczytać bez odniesienia do zewnętrznego pliku MP4.

W tym drugim przypadku wartość auxiliary.tracks.interleaved musi być ustawiona na 1 (patrz „Statyczne metadane” poniżej), a przesunięcia próbek w polu axte.moov są względne do początku pliku, a ładunki próbek ścieżek głównej i pomocniczej mogą być przeplatane. W tym przypadku pole axte.mdat może być puste.

Metadane statyczne

Plik Auxiliary Tracks MP4 zawiera pole moov.meta z elementem mdta, który zawiera te metadane: Metadane mogą się wyświetlać w dowolnej kolejności.

Klucz metadanych

Wskaźnik typu

Wartość

(Opcjonalnie) auxiliary.tracks.interleaved

75 (8-bitowa liczba bez znaku)

0: oznacza, że próbki nie są przeplatane i znajdują się w polu axte.mdat

1: wskazuje, że próbki są przeplatane w polu mdat głównej ścieżki wideo

Wszystkie pozostałe wartości są zarezerwowane i nie można ich używać.

Brak tych metadanych oznacza wartość domyślną 0.

auxiliary.tracks.map

0 (zarezerwowane)

Format binarny:

  • Wersja 1 bajta = 1
  • Liczba ścieżek audio o długości 1 bajta = n
  • n bajtów typów ścieżek z tego zestawu:
    • 0 = ostry obraz
    • 1 = film z efektem głębi (linearny)
    • 2 = film z efektem głębi (odwrotny),
    • 3 = metadane głębi zsynchronizowane
    • 4 = półprzezroczyste wideo
    • 5-127 = Zarezerwowane do użycia w przyszłości
    • 128–255 = typy ścieżek niestandardowych

Kolejność typów ścieżek w auxiliary.tracks.map wskazuje ich kolejność w danych ścieżek pomocniczych w pliku MP4.

Typy ścieżek pomocniczych

Plik MP4 z ścieżkami pomocniczymi może zawierać ścieżki wideo i metadane, które są przydatne podczas edycji.

Ścieżka wideo z ostrą

Film w pełnej rozdzielczości bez efektów, które można edytować. Ścieżka wideo może być zapisana w innej rozdzielczości niż główna ścieżka wideo. Twardy ścieżka wideo może używać dowolnego popularnego kodeka wideo i może być w standardowym lub wysokim zakresie dynamicznym.

Ścieżka wideo z efektem głębi

Ścieżka wideo z głębią zawiera informacje o głębi zakodowane jako standardowy film w skali szarości. Umożliwia to dekodowanie i kodowanie ścieżek z informacjami o głębi na urządzeniach, które nie mają specjalnego wsparcia dla dekodowania lub kodowania głębi. Ścieżka wideo z głębią dynamiczną może używać H.264/AVC, H.265/HEVC, VP9, AV1 lub dowolnego innego popularnego kodeka wideo. Ścieżka wideo z głębią dynamiczną może być 8- lub 10-bitowa i kodowana liniowo lub odwrotnie (patrz specyfikacja dynamicznej głębi 1.0).

Ścieżka metadanych z głębokością czasowa

Ścieżka metadanych z głębią w czasie zawiera wartości normalizujące do obliczenia głębi oraz tabelę ogniskowej, której można użyć do obliczenia promienia rozmycia w celu uzyskania efektu bokeh.

Przykładowy typ MIME

application/x-depth-metadata

Przykładowa składnia

Format binarny (wszystkie liczby całkowite w formacie little-endian):

  • Bliskość (16-bitowa liczba zmiennoprzecinkowa)
  • Daleka odległość (16-bitowa liczba zmiennoprzecinkowa)
  • Liczba wpisów w tabeli docelowej (16-bitowa liczba całkowita)
  • Wpis w tabeli Focal
    • Odległość od punktu wejścia (16-bitowa liczba zmiennoprzecinkowa)
    • Promień wejścia (liczba zmiennoprzecinkowa 16-bitowa)
Przejrzysty pasek wideo

Ścieżka wideo przechowująca wartość alfa (przezroczystość) dla każdego piksela w odpowiedniej klatce. Minimalna wartość oznacza pełną przezroczystość, a maksymalna – pełną nieprzezroczystość. Wartości pośrednie odpowiadają różnym poziomom przezroczystości na skali liniowej, a kompozycja wykorzystuje normalny tryb mieszania z wartościami kolorów nieprzemnożonymi wstępnie. Podobnie jak ścieżka wideo z głębią, ta ścieżka powinna być zakodowana jako standardowy film w odcieniach szarości.

Przykładowe przypadki użycia

  • przechowywanie renderowanego, odtwarzalnego filmu z efektem bokeh na ścieżce głównej, z dodatkowymi ścieżkami wideo dla oryginalnych (przed rozmyciem) ostrych danych kolorów i mapy głębi oraz dodatkową ścieżką metadanych z czasem z metadanymi głębi, które odzwierciedlają punkt ostrości w każdym klatce. Ścieżek pomocniczych można następnie używać w edytorze wideo, aby modyfikować obiekt w centrum uwagi i ponownie renderować ścieżkę wideo z efektem bokeh wysokiej jakości.

  • przechowywanie wyrenderowanego półprzezroczystego filmu z naklejką, np. animowanego emoji na białym tle na głównej ścieżce wideo, z dodatkową ścieżką wideo zawierającą mapę alfa; Kompozytor może użyć ścieżki pomocniczej, aby zmieszać naklejkę z tłem, korzystając z informacji o przezroczystości z ścieżki pomocniczej.