MP4

MP4（エムピーフォー）はデジタルマルチメディアコンテナフォーマットである。映像・音声の格納によく用いられ、他にも字幕や静止画なども格納できる。MPEG-4規格の一部で、MPEG-4 Part 14（正式にはISO/IEC 14496-14:2003、ISO/IEC JTC 1）で標準化されている。
拡張子.mp4を推奨されており、MPEG-4の動画・音声の記録に用いられている。また、第3世代携帯電話の業界団体である3GPPおよび3GPP2でも、これに独自拡張を加えたものが標準ファイルフォーマットとして採用されている（あくまで標準でありキャリアごとにさらなる拡張が加えられている）。
歴史.
2001年に最初の標準であるMPEG-4 Part1:Systems（ISO/IEC 14496-1:2001）が標準化された。この規格は後の規格と区別するため「MP4 version1」と呼ばれる。これはApple社のQuickTimeコンテナフォーマットをもとに策定された。
2003年には「MP4 version2」として知られる MPEG-4 Part14:MP4 file format（ISO/IEC 14496-14:2003）で標準化された。この規格は「ISOベースメディアファイルフォーマット」（MPEG-4 Part12、ISO/IEC 14496-12:2003）を拡張して作られている。
2004年には「MP4 AVCE」（MPEG-4 Part15、ISO/IEC 14496-15:2004）と呼ばれる拡張規格が定められ、H.264やAACを格納できるようになった。
技術詳細.
ISOベースメディアファイルフォーマット.
MPEG-4の第12部 (ISO/IEC 14496-12) で規定されているISOベースメディアファイルフォーマットは木構造を持ち、各ノードをボックス (box) と呼ぶ。あるいは、元になったQuickTimeファイルフォーマットの用語であるアトム (atom) と呼ぶこともある。また、一つないし複数のボックスを子要素として持つことができるボックスがあり、その親要素のボックスをコンテナボックス (container box) ないし単にコンテナと呼ぶ。コンテナが子要素以外のデータを持つことはできない。各ボックスの先頭には符号なし32ビット整数型の自身のサイズおよび、半角英数4文字（32ビット）のボックスタイプが必ず与えられる。なお、慣例的にボックスタイプは小文字で記述される。
ボックス構造を採用したことにより、複数のトラック (track) を同時に1つのファイルに格納したり、時刻情報やメタデータを記述することにより多重化や任意時刻でのアクセス（ランダムアクセス）を容易に実現できる。また、さまざまな種類のメディアを柔軟に扱えるという特徴もあり、MP4のようにMPEGに完全に準拠したメディアのみを含むことだけでなく、3GPP/3GPP2などのようにMPEGの規格外であるAMRやH.263などのメディアを含むことも可能である。
ボックス構造の扱い方はある程度はユーザが任意に決めることができる。例えば、動画、音声などのストリームを単純に直列に並べることも可能であり、また、同期やランダムアクセスを容易にするために動画と音声を細切れに格納することも可能である。
ボックス構造.
ISOベースメディアファイルフォーマットのボックス構造は木構造をとるが、ここでは主なボックスについて述べる。実際には多数の木構造のボックスが含まれ、さまざまなレベルの情報を柔軟に格納することができるようになっている。
MP4ファイルフォーマット.
MP4ファイルフォーマットは、ISOベースメディアファイルフォーマットに対して、MPEG-4のオブジェクト符号化に対応するためのオブジェクト記述ボックス (iods) の追加や、動画や音声などのエレメンタリストリームに関する情報を記述するサンプル記述ボックス (mp4v, mp4a, mp4s) の追加などの拡張を行ったものである。
格納できるメディアの種類.
MP4ファイルは以下に示す映像・音声コーデックのメディアデータを組み合わせて（多重化して）格納し利用できる。
また、3GPP/3GPP2ファイルフォーマットでは、H.263、MPEG-4（オプション）、AMR、AACなどを格納できる。
拡張子.
仕様書では、MP4ファイルの拡張子は.mp4が望ましいとされている。
また、派生フォーマットである3GPP/3GPP2ファイルフォーマットの拡張子はそれぞれ.3gp、.3g2である。
また、.m4rという拡張子もあり、これはiPhone用着信メロディに使われる拡張子であるが、中身は40秒までの長さの制約がついたMP4オーディオファイルそのものである。
また、Adobe FlashのFlash Videoでは.f4vという拡張子が使われている。
利用例.
MP4は下記に採用されており、実際に利用されている。