MP4

Last-modified: 2017-06-02 (金) 17:50:48

MP4とは

通称「MP4」は、正式には「MPEG-4 Part 14」あるいは「ISO/IEC 14496-14」規格のことを指します。
MP4は、デジタルムービーにおいて、コンテナの形式の1つで、コンテナ内には、少なくともビデオかオーディオを1つ以上格納します。
通常、ビデオはH.264コーデック、オーディオはAACコーデックで圧縮されたものを格納します。

MP4概要

ボックスについて

ファイルは「ボックス」というオブジェクトの連なりで構成されています。
つまり次図のようにMP4ファイルはN個のボックスで構成されています。

【MP4】【Box】【Box】+ …+【Box】【Box】

ボックスにはムービーデータやオーディオデータを含むボックスや、ムービーの解像度やフレームレートといった情報を含むボックスなど多くの種類のボックスあります。
ボックスの概念は、オブジェクト指向の「クラス」に似ていて次の特徴があります。

  1. ボックスAがボックスBを継承できる。
  2. ボックスAはボックスCを所持できる。

逆にクラスとは違って、カプセル化や多重継承などは存在しません。
またクラスとは違いますが、データベースの「多重度(カーディナリティ, cardinality)」のように次の特徴もあります。

  1. ボックスAはボックスDを1つだけ所持できる。
  2. ボックスAはボックスEを1以上、所持できる。

古い規格書では「アトム, atom」と呼ぶこともあります。
ボックスの仕様は、ISO/IEC 14496-12 "ISO Base Media File Format" で定義されています。

ISO Base Media File Formatについて

ISO Base Media File Formatは、次の用途に使用できるように設計されています。

  1. ローカルストレージ上での編集や再生
  2. ネットワークやその他の配送システムを用いた再生や表示

2番目の「ネットワーク」については、最初の仕様である Quick Time File Format では考えられていなかった用途です。

ボックスの種類

規格書の読み方

MP4 ファイルフォーマットは規格書 ISO/IEC 14496-14 に規定されていますが、30超の規格書を参照して規定されているため、この規格書を読むのは少しコツが必要です。
本章では、規格書を読むにあたって必要な情報を整理します。

他規格書との関連

ISO/IEC 14496-14 "MP4 file format" は、そもそも ISO/IEC 14496-12 "ISO base media file format" に対して、いくつかの規定を追加した規格書です。このためページ数も Part14が18ページに対して、Part12は254ページほどあります。(ちなみに、ISO/IEC 15444 は " JPEG 2000 image coding system" の規格ですが、その Part 12 も "ISO base media file format" に関する規定で、内容は全く同じです。)
Part 14 を読むにはまず最初にPart 12を読み込む必要があります。これはPart12に単語の定義や基本的な考え方などが記載されているからです。
またPart 12も他の規格書を参照しないと読み込めない部分があります。特にファイルフォーマットの記す際には「SDL (Syntactic Description Language)」を用いてあります(酷いことにPart12では「Syntax Description Language」とあり、ググってもでてきません) 。この「SDL」は、Part1の8章に定義がありますので、参考にしてください。

メディアデータに関する規格書

さらに MP4 の中に格納するメディアデータの種類ごとに追加で参照しなければいけない規格書があります。
それを下表にまとめました。

種別規格名MP4に格納する際に参照する規格書
ビデオISO/IEC 14496-10 "Advanced Video Coding"
H.264
ISO/IEC 14496-15 "Advanced Video Coding (AVC) file format"

用語集

atom, アトム
boxのこと。Apple社が策定したバージョンでは「atom」と呼んでいたが、ISO/IECが標準規格化した際に「box」とした。
box, ボックス
データの構成要素。MP4の基本的な概念。各ボックスは FourCC で識別できる。オブジェクト指向型で他のボックスを継承でき、親ボックスのデータ構造を引き継げる。
chunk, チャンク
複数のサンプルをまとめた要素で、サンプル同士の継ぎ目がないデータ。1つのトラックに配置される。オーディオサンプルを例にとると1024サンプル単位で1つのチャンクを構成して、1つのトラックに配置する。ビデオフレームを例にとると30フレーム(サンプル)で1つのチャンクを構成して、1つのトラックに配置する。
container box, コンテナボックス
複数の関連するボックスをまとめたもの。通常のコンテナボックスはフルボックスを継承しない。
hint track, ヒントトラック
特別なトラックで、メディアデータを含まない。代わりに1つ以上のトラックをストリーミングチャンネルにパッケージングするための指示情報を含む。
mdat, media data box
presentationのメディアデータを含むボックス。
moov, movie box
presentationに関するメタ情報を持つサブボックスを含むボックス。
presentation
1つ以上のモーションシーケンス、もしくはオーディオのこと。
sample, サンプル
1つの時刻(タイムスタンプ)と関連付けられるデータ。
SDL, Syntactic Description Language
MPEG-4シリーズで、データの構文を記すのに使用される言語。C言語ライクなものに、C++やJavaのようなオブジェクト指向要素を取り入れた言語。
sub-box
?明確な説明は規格書にない・・。