ISOBMFF
ISO Base Media File Format / アイエスオービーエムエフエフ
MP4や3GP、HEIF、CMAFなどの土台になっている、ボックスと呼ぶ単位を入れ子に積み上げるファイル構造の規格です。ISO/IECが14496-12として定めており、AppleのQuickTimeの形式が元になっています。
- 規格
- ISO/IEC 14496-12(MPEG-4 Part 12)
- 策定団体
- ISO/IEC(MPEG)
- 元になった形式
- QuickTimeファイルフォーマット(MOV)
- 基本の単位
- ボックス(長さ4バイト+種類4文字+中身)
- 主なボックス
- ftyp(形式の宣言)、moov(目次)、mdat(データ本体)、moof(断片の目次)
- 派生する主な形式
- MP4、3GP、HEIF、AVIF、CMAF
- 中身を見る主なツール
- MP4Box(GPAC)、Bento4、ffprobe、MediaInfo
ISOBMFFは、ふだん拡張子として目にすることのない名前です。それでも、MP4が再生途中から始まらない、録画が途中で止まったファイルが開けない、配信のセグメントが壊れている、といった問題を追いかけると、たいていこの構造の話にたどり着きます。
ISOBMFFが使われる場面
ISOBMFFそのものは土台の規格で、実際のファイルは次のような派生形式として使われています。
- MP4。スマホの撮影、SNSやWebの動画、編集ソフトの書き出しの標準
- 3GP。第3世代携帯電話の動画
- HEIFとAVIF。iPhoneの写真で使われるHEICなどの画像形式
- CMAFとfMP4。HLSやMPEG-DASHの配信で使う断片化したセグメント
映像制作の現場では、書き出したMP4がWebで途中から再生できない、ライブ配信のセグメントがプレーヤーで読めない、といったトラブルの原因を調べるときに、ISOBMFFのボックスを直接のぞくことになります。配信システムの開発では、セグメントの中の時刻情報やDRMの情報がどのボックスに入っているかが仕様書の前提になります。
ISOBMFFの仕組み
ISOBMFFのファイルは、ボックス(QuickTimeではアトムと呼ぶ)の積み重ねです。1つのボックスは、長さを示す4バイト、moov や mdat のような4文字の種類、そして中身でできていて、中身にさらに別のボックスを入れられます。
代表的なボックスは次の通りです。
ftypはファイルの先頭で、MP4か3GPかといったブランドを宣言するmoovはトラックの構成、コーデックの設定、各フレームがファイルのどこにあるかを記した目次mdatは映像や音声のデータ本体moofは断片化したファイルで、直後のmdatの分だけを記した小さな目次
プレーヤーは moov の目次を読んでから mdat のデータを取りに行きます。この目次を最後にまとめて書くか、短い断片ごとに書くかで、ファイルの性質が大きく変わります。
ISOBMFFで間違えやすい点・壊れたときの見方
よくあるのは、moov がファイルの末尾にあるMP4です。ダウンロードしながら再生するWebでは、最後まで読み込むまで再生が始まりません。FFmpegなら -movflags +faststart を付けて書き出すと、moov が先頭に移ります。
録画中に電源が落ちたり容量が尽きたりしたMP4が開けないのも、最後に書くはずの moov が書かれていないためです。mdat のデータは残っていても、目次がないので再生できません。これを避けるため、OBS Studioには断片化したMP4やMOVで録画する設定があり、途中で止まってもそこまでは再生できます。
中身を確かめるには、MP4Boxの -info やBento4の mp4dump、ffprobeでボックスの並びを表示します。
よくある質問
ISOBMFFとMP4の違いは何ですか
ISOBMFFはボックス構造の決まりだけを定めた土台で、MP4はその上にMPEG-4のコーデックの入れ方などを足した形式です。MP4のファイルはすべてISOBMFFの構造を持っています。
ISOBMFFの拡張子は何ですか
ISOBMFFそのものに決まった拡張子はありません。実際のファイルは .mp4、.m4a、.3gp、.heic のように、派生形式ごとの拡張子で保存されます。
fMP4はISOBMFFですか
はい。fMP4はISOBMFFの断片化の仕組みを使ったMP4で、HLSやMPEG-DASHのセグメントに使われています。配信での使われ方はHLSとMPEG-DASHの違いで解説しています。
この用語を扱ったコラム
似ている形式との違い
関連する用語
最終更新
