補助トラック拡張機能付き MP4(MP4-AT)ファイル形式 0.9

MP4-AT ファイル形式は、キャプチャ後の編集と合成に役立つ補助トラック(デプスマップ動画トラックなど)を、再生可能なメディアデータとともに ISOBMFF/MP4 構造に保存することをサポートしています。

この形式の目的は、この仕様を実装していないクライアントに対してトラックを非表示にするような方法で補助トラックを保存することです。これにより、クライアントが補助トラックを再生可能なデータとして解釈するのを防ぐことができます。

依存関係

この仕様の引用規格は次のとおりです。

はじめに

「MUST」、「MUST NOT」、「REQUIRED」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「MAY」、「OPTIONAL」の使用は、RFC2119 で定義されている IETF 標準に従います。

MP4-AT ファイル形式

MP4-AT ファイル形式は、さまざまな編集オペレーションを可能にするために、プライマリ トラックと補助トラックで構成されています。メイントラック(ボケ効果が適用された動画トラックなど)は通常どおり MP4 ファイルに書き込まれますが、補助トラックは Auxiliary Tracks MP4 に書き込まれます。Auxiliary Tracks MP4 は、MP4 に準拠した別のコンテナで、axte(Auxiliary Tracks Extension)ボックス内に配置されます。axte ボックスはファイル内の最後のボックスにすることをおすすめします。これにより、ファイルを切り捨てて補助データを削除できます。

この形式は下位互換性があります。この形式の残りの部分をサポートしていないプレーヤーは、ファイルを読み込むときにメインの動画トラックを読み取って再生します。

MP4-AT ファイル内の要素の配置を示す線図

このファイルには、mdta ハンドラを含む moov.meta ボックスがあり、次のメタデータが含まれています。メタデータは任意の順序で表示できます。

メタデータキー

タイプ インジケーター

auxiliary.tracks.offset

78(ビッグ エンディアン 64 ビット符号なし整数)

axte ボックスのファイル オフセット(バイト単位)

auxiliary.tracks.length

78(ビッグ エンディアン 64 ビット符号なし整数)

axte ボックスの長さ(バイト単位)

補助トラック拡張機能(axte)ボックス

構文

axte ボックスは、ISO/IEC 14496-12:2022: 4.2 で定義されているボックスのセマンティクスを使用して記述されます。

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

ここで、データ フィールドにはAuxiliary Tracks MP4 が含まれています。

ペイロード

axte ボックスのペイロードは、Auxiliary Tracks MP4 です。Auxiliary Tracks MP4 は通常の MP4 構造になっています。

補助トラック MP4 内の要素の配置を示す線図

Auxiliary Tracks MP4 には、すべての補助トラックのサンプル メタデータが含まれています。すべての補助トラック サンプル ペイロードは、補助トラック MP4mdat ボックスまたは外側の MP4 の mdat ボックスのいずれかに保存する必要があります(両方ではありません)。

前者の場合、auxiliary.tracks.interleaved は 0 に設定する必要があります(下記の「静的メタデータ」を参照)。axte.moov ボックスのサンプル オフセットは、Auxiliary Tracks MP4 の開始を基準としています。これにより、Auxiliary Tracks MP4 が自己完結型になります。つまり、Auxiliary Tracks MP4 は外側の MP4 を参照せずに単独で読み取ることができます。

後者の場合、auxiliary.tracks.interleaved は 1 に設定する必要があります(下記の「静的メタデータ」を参照)。axte.moov ボックスのサンプル オフセットはファイルの先頭を基準としており、プライマリ トラックと補助トラックのサンプル ペイロードはインターリーブされる場合があります。この場合、axte.mdat ボックスは存在しない場合があります。

静的メタデータ

Auxiliary Tracks MP4 には、次のメタデータを含む mdta ハンドラを含む moov.meta ボックスが含まれています。メタデータは任意の順序で表示できます。

メタデータキー

タイプ インジケーター

(省略可)auxiliary.tracks.interleaved

75(8 ビット符号なし整数)

0: サンプルがインターリーブされておらず、axte.mdat ボックス内にあることを示します。

1: メイン動画トラックの mdat ボックスにサンプルがインターリーブされていることを示します。

その他の値はすべて予約済みであり、使用できません。

このメタデータがない場合、デフォルト値 0 が指定されます。

auxiliary.tracks.map

0(予約済み)

バイナリ形式:

  • 1 バイト バージョン = 1
  • 1 バイト トラック数 = n
  • 次のセットから n バイトのトラックタイプ
    • 0 = シャープな動画
    • 1 = ディープ動画(リニア)
    • 2 = デプス動画(逆)
    • 3 = 時間指定された深度メタデータ
    • 4 = 半透明の動画
    • 5 ~ 127 = 将来の使用のために予約済み
    • 128 ~ 255 = カスタム トラック タイプ

auxiliary.tracks.map 内のトラックタイプの順序は、Auxiliary Tracks MP4 のペイロード内の順序を示します。

補助トラックタイプ

Auxiliary Tracks MP4 には、編集に役立つ次の動画トラックとメタデータ トラックが含まれている場合があります。

シャープな動画トラック

編集可能なエフェクトが適用されていない、元の解像度の動画。動画トラックは、メイン動画トラックとは異なる解像度で保存される場合があります。シャープな動画トラックには、任意の一般的な動画コーデックを使用できます。また、標準またはハイダイナミック レンジにすることもできます。

奥行き動画トラック

深度動画トラックは、標準のグレースケール動画としてエンコードされた深度情報を提供します。これは、デプスの特別なデコードまたはエンコードのサポートがないデバイスで、デプス トラックのデコードとエンコードを可能にするためのものです。深度動画トラックでは、H.264/AVCH.265/HEVCVP9AV1 などの一般的な動画コーデックを使用できます。深度動画トラックは 8 ビットまたは 10 ビット、リニアまたは逆エンコードにできます(Dynamic depth 1.0 仕様を参照)。

時間指定された深度メタデータ トラック

時間指定された深度メタデータ トラックには、深度を計算するための正規化値と、ボケ効果のぼかし半径の計算に使用できる焦点テーブルが含まれています。

サンプルの MIME タイプ

application/x-depth-metadata

サンプル構文

バイナリ形式(すべての整数はリトル エンディアン):

  • 近接距離(16 ビット浮動小数点数)
  • 遠距離(16 ビット浮動小数点数)
  • 焦点テーブルのエントリ数(16 ビット整数)
  • 焦点テーブルのエントリ
    • エントリ距離(16 ビット浮動小数点数)
    • エントリの半径(16 ビット浮動小数点数)
半透明の動画トラック

対応するフレームの各ピクセルのアルファ値(透明度)を格納する動画トラック。最小値は完全に透明、最大値は完全に不透明を表します。中間の値は、線形スケールで異なるレベルの半透明度を表します。合成では、乗算前でない色値で通常のブレンドモードが使用されます。深度動画トラックと同様に、このトラックも標準のグレースケール動画としてエンコードする必要があります。

ユースケースの例

  • 再生可能なレンダリングされたボケ動画をメイントラックに保存し、元の(ぼかし前)シャープなカラーデータと深度マップの補助動画トラック、各フレームのフォーカス ポイントを反映した深度メタデータを含む補助のタイミング付きメタデータ トラックを保存します。補助トラックは、動画エディタで使用して、被写体のフォーカスを変更し、高品質のボケ動画トラックを再レンダリングできます。

  • 事前レンダリングされた半透明の「ステッカー」動画(白色の背景にアニメーション エモジの動画など)をメインの動画トラックに保存し、アルファマップを含む補助動画トラックを作成する。コンポジタは、この補助トラックを使用して、補助トラックからの半透明情報を使用してステッカーを背景とブレンドできます。