ごちうさMADで学びたいmp4のデータ構造
近頃、ごちうさMADの中身が気になって気になってしかたがない病にかかってしまいました。これでは夜も眠れないので、全く動画関連の知識がない中ではありましたが、ごちうさMADの中身を調べる次第となりました。
素材
今回はこちらを利用します。
(各位、どうにかしてこの動画のmp4データを入手してください)
MP4Boxの入手
mp4の内部構造を調べるため、MP4Boxというツールを利用します。 macなら、
brew update
brew install gpac
とhomebrewで入手することができます。
それでは実行してみます。
MP4Box -info -v sm24551585.mp4
一見、意味不明なデータが取得できました。
mp4の内部構造
mp4はBOXと呼ばれる構造が複数繋がったデータ形式となっています。 BOXはそれ自体が内部に別のBOXを持つこともできるのですが、 その中でも「ftyp」「moov」「mdat」というようなBOXがルートに配置されています。
さきほどのMP4Boxの出力でも、"Current top box"として表示されているのでわかりやすいかと思います。この中で、moovは動画のメタ情報、mdatは動画本体の情報が格納されています。
ごちうさMADでは以下のように、
- ftype
- moov
- mvhd
- ...
- mdat
- free
moovがmdatより前に存在することがわかります。これは恐らく、ニコニコ動画で再エンコードされた際、ストリーミングやシーク等に対応するためにmoovをこの位置に配置しているのだと考えられます(推測)。
バイナリで確認
さて、動画はバイナリデータですから、とりあえずバイナリエディタで開いてみましょう。
先頭の8バイトを以下に示します。
00 | 00 | 00 | 14 | 66 | 74 | 79 | 70 |
これは前半の4byteがBOXの長さ、後半の4byteがBOXの名前を表しています。この場合は'ftyp'です。長さが0x14なので、ftyp BOXはこのヘッダ含め20バイトの大きさであることがわかります。このBOXには以下'isom'というascii文字列が格納されていますが、これはこのmp4ファイルの規格を示しています。
Complete List of all known MP4/QT 'ftyp' designations
このようにして頭からバイナリを読んでいくと、動画の長さやトラックの数等を知ることができます。
ここで、ファイルの0x1D0あたりの位置にある'stsd'というBOXの内容を見ていただくと、'avc1'というascii文字列が確認できると思います。これで、このmp4に格納されている動画がH.264形式であることがわかります。この情報は、MP4Boxの出力に、
Visual PL: AVC/H264 Profile (0x15)
とあることからも確認できます。
H264
続いてはこちらの中身を見ていきたいところですが、このH.264については完全に闇だったため、全く情報を追えていません。だれか私にISO-14496-10を読み解く力をください。(続かない)
参考ページ
デジタル映像の「アーカイブ&デリバリー」に関する技術情報サイト|mpeg.co.jp > MPEGラボ > 第26回
http://perso.telecom-paristech.fr/~concolat/MPEGFileFormats.pdf
H.264 について(まとめ) 【H.264/Annex B/NAL file format/AVC/rtmp】 - モノトーンの伝説日記
ご注文はうさぎですか?? 第1巻 (初回限定版) [Blu-ray]
- 出版社/メーカー: NBCユニバーサル・エンターテイメントジャパン
- 発売日: 2015/12/25
- メディア: Blu-ray
- この商品を含むブログ (17件) を見る