コンテナ形式(非公式にはラッパーと呼ばれることもある)またはメタファイルは、複数のデータストリームを単一のファイルに埋め込むことができるファイル形式で、通常はそれらのストリームを識別してさらに詳細にするためのメタデータも含まれています。 [ 1 ] コンテナ形式の注目すべき例としては、アーカイブファイル( ZIP形式など)やマルチメディア再生に使用される形式(Matroska、MP4、AVIなど)があります。最も初期のクロスプラットフォームコンテナ形式には、 Distinguished Encoding Rulesと1985 Interchange File Formatがありました。

コンテナはデータやメタデータのエンコード方法を識別することはできますが、実際にそのデータをデコードする方法を指示するわけではありません。コンテナを開くことができるプログラムは、その内容をデコードするために適切なコーデックも使用する必要があります。プログラムに必要なアルゴリズムがない場合、コンテナ内のデータを使用することはできません。このような場合、プログラムは通常、コーデックが不足していることを示すエラーメッセージを出力します。ユーザーは、そのコーデックを入手できる可能性があります。
コンテナ形式は、あらゆる種類のデータを格納できるように作成できます。そのようなファイル形式の例はいくつかありますが(例えば、Microsoft WindowsのDLLファイルなど)、ほとんどのコンテナ形式は特定のデータ要件に特化しています。例えば、オーディオストリームやビデオストリームはさまざまなアルゴリズムでエンコードおよびデコードできるため、コンテナ形式を使用することで、マルチメディア再生ソフトウェアのユーザーに単一のファイル形式のように見せることができます。
様々なコンテナ形式の違いは、主に以下の5つの問題に起因します。
ラッパーのみを指定し、コーディングは指定しない純粋なコンテナ形式に加えて、モジュール設計と前方互換性の一環として、ストレージ層とコーディングの両方を指定するファイル形式も数多く存在する。
例としては、 JPEGデータを格納するためのJPEGファイル交換フォーマット(JFIF)や、ポータブルネットワークグラフィックス(PNG)フォーマットなどが挙げられる。
原則として、ストレージ層は維持したままコーディングを変更することができます。例えば、マルチイメージネットワークグラフィックス(MNG)はPNGコンテナ形式を使用しますがアニメーションを提供し、JPEGネットワークグラフィックス(JNG)はJPEGエンコードされたデータをPNGコンテナに格納します。ただし、どちらの場合も、異なる形式には異なるマジックナンバーがあります。形式によってコーディングが指定されますが、MNGにはPNGエンコードされた画像とJPEGエンコードされた画像の両方を含めることができます。
コンテナファイルは、異なるデータタイプを識別してインターリーブするために使用されます。シンプルなコンテナフォーマットは、さまざまな種類のオーディオフォーマットを格納できますが、より高度なコンテナフォーマットは、複数のオーディオおよびビデオストリーム、字幕、チャプター情報、メタデータ(タグ)に加え、さまざまなストリームを一緒に再生するために必要な同期情報をサポートできます。ほとんどの場合、ファイルヘッダー、ほとんどのメタデータ、および同期チャンクは、コンテナフォーマットによって指定されます。たとえば、最適化された低品質のインターネットビデオストリーミング用のコンテナフォーマットが存在し、これは高品質のBlu-rayストリーミングの要件とは異なります。
コンテナフォーマットの各要素は、RIFFやPNGでは「チャンク」、QuickTime/MP4では「アトム」、MPEG-TSでは「パケット」(通信用語に由来)、JPEGでは「セグメント」など、さまざまな名称で呼ばれています。チャンクのメインコンテンツは「データ」または「ペイロード」と呼ばれます。ほとんどのコンテナフォーマットでは、チャンクはそれぞれヘッダー付きで順番に並んでいますが、TIFFではオフセットが格納されます。モジュール式のチャンクは、ファイル破損、フレーム落ち、ビットスリップなどの場合に他のチャンクを簡単に復元できますが、オフセットはビットスリップが発生した場合にフレーミングエラーを引き起こします。
一部のコンテナはオーディオ専用です。
その他のコンテナは静止画像専用です。
その他の柔軟なコンテナには、さまざまな種類のオーディオやビデオ、その他のメディアを収納できます。最も一般的なマルチメディアコンテナは次のとおりです。[ 2 ] [ 3 ]
NUT、MXF、GXF、ratDVD、SVI、VOB、DivX Media Formatなど、他にも多くのコンテナフォーマットが存在します。