woshidan's loose leaf

ぼんやり勉強しています

mp4ヘッダーのボックスとは

mp4 ヘッダー でぐぐったらボックスって出てくるのですが

refs. http://matsu623a.blogspot.jp/2013/12/mpeg4ftyp.html

mp4 ヘッダー ででてくるのは引用元が少なくてあれなのですが、

  • だいたいファイル冒頭にあるファイルのメタデータ持ったバイト群およびハッシュなどの類
  • mp4の場合、ファイル形式がボックスで構成されており、ボックスの中でもヘッダーと呼ばれる部分があるのでややこしく感じる

という認識で良さそう。

そのボックスとはなんぞや

refs. https://unoh.github.io/2007/09/12/mp43gpp3gpp2.html

MP4や、その派生である携帯電話向けの3GPP3GPP2などのファイルフォーマットはボックス(あるいはその基になったQuickTimeでの用語のAtom)と呼ばれるデータブロックで構成され

 

ボックスによってはその内部にさらにボックスが入れ子になるツリー構造になっています

 

各ボックスはその先頭8バイト(オクテット)がボックスを識別するためのヘッダで、最初の4バイト(オクテット)がボックスのサイズ、続く4バイトがそのタイプです。

  • 動画を表すmp4や3gppなどのファイルフォーマットはボックス単位で構成
  • ボックスはボックスの大きさ + ボックスのタイプの部分がボックス識別用のヘッダから始まる
  • ボックスはボックスの大きさの部分で宣言した大きさの分だけ続く。入れ子の場合は入れ子になったボックスの分の大きさも親側のボックスが宣言する(っぽい((いつかまた調べる)))
    • cf. moov以下にmvhdなどがあるが、moovの大きさはこれを含んでいると思われる
  • ボックスの種類(一部)
    • ftyp
      • そのファイルが準拠している規格を表す4文字の「ブランド」が列挙
      • 一番良く使われる形式 ... 4バイト ... それ以外に利用可能な形式 の順で並ぶ
    • moof
      • 3gpp2用のボックス
      • HTTPストリーミングを想定したもので、文字通りデータを分割し小分けに受信することで、全データのダウンロードを完了しなくても再生が開始できるというもの (参考ページより引用まま)
  • mp4box, mp4dump などのツールで確認可能