profile?atom?mp4のよくわからないあれこれ(atom編)


どうもこんにちわ。

最近は長尺の動画広告が増えてきましたね。
youtubeでもインストリーム広告で1分以上の長尺の動画広告が流れているのをよく見ます。
(※インストリーム広告:動画コンテンツの中や前後に差し込まれる動画広告)

そうなると、ファイルサイズが大きくなるためファイルをダウンロードしながら再生する「プログレッシブダウンロード」が必須となってきます。

また、インストリームに限らず弊社のインリード広告のようなアウトストリーム広告でも再生開始までの時間を短縮するべく、プログレッシブダウンロードは必須の要素となります。
(※アウトストリーム広告:動画コンテンツのとは関係なく、ページ内で再生される動画広告)

となるとmp4入稿の際に「moov atomをファイルの先頭に設置してください」なんて言われることがあるのですが、恐らく「moov atom? なんだそれ?」ということが多いのではないかと思います。

そこで、今回はmp4でのプログレッシブダウンロードに必要なmoov atomとはなんぞや?というテーマで記事を書きたいと思います。

mp4の構造

そもそもの話ですが、mp4はboxというものから構成されています。

boxはmp4の元になったQuickTimeファイルフォーマットに倣いatomとも呼ばれ、代表的なatomは以下の3つとなります。

  • ftyp:ファイルタイプが記述されたatom
  • moov:メディア毎のヘッダ情報(サイズ、再生時間、etc.)などのメタデータが格納されたatom
  • mdat:ビデオやオーディオデータ自体が格納されたatom
スクリーンショット 2015-11-01 23.21.30

mp4を構成するatomのイメージ

これらのatomはさらにatomから構成され、木構造になっています。

mp4の解析ができるMP4Readerで見るとこのようになっています。

mp4reader_sample

MP4Readerでmp4ファイルの構造を解析した結果

 

atomの順序

各atomの順序は規格上どうなっていても問題ないようで、各メタデータを含むmoovはデータ本体を持つmdatができた後でしか作れないため、mdatよりも後ろに配置されることも多くあります。

しかし、mp4ファイルは先頭から順に読まれるので、データ本体であるmdatがメータデータのmoovよりも前にある場合は、mdat部分が読み込まれてからでないとメタデータを参照して、動画の再生を開始することができません。

そうなると、動画再生開始までに時間がかかるため、メタデータであるmoovをmdatよりも前にして再エンコードする必要があります。

これをfast startweb optimizedということがあります。

例えば、HandBrakeではweb optimazedというチェックボックスがあるので、ここにチェックを入れて再エンコードすることができます。

スクリーンショット 2015-11-03 23.05.18

HandBrakeでのweb optimized設定

 

その他にはffmpegでエンコードする場合は、-movflags +faststart オプションをつけることで同様に対応可能です。

また、使ったことはないのですがfast startにしてくれる、MP4 Fast Startというツールもあるようです。

ただ、それぞれのツールを使う際はバックアップを取るなどして、自己責任の上でご利用をお願いします。

ストリーミングとプログレッシブダウンロードの違い

ちなみにですが、プログレッシブダウンロードはストリーミングと全く違います。

wikipediaにもあるように

ストリーミングの場合は再生後そのデータを破棄するように作られていることが多い(保存することができるクライアントも存在する)が、HTTPによるプログレッシブダウンロードの場合は破棄せず一時ファイルとして保存しつづけ、キャッシュが残っている限り次の再生時にもキャッシュが使われる。

そもそも、ストリーミングとは違いプログレッシブはデータはキャッシュに残ります。

ただ、プログレッシブはストリーミングサーバーは不要ということもあり、YouTubeなんかでも使われていたりします。

また重要な違いとしては、ストリーミングはSkypeやUstreamのようにリアルタイムでのデータ送信で利用されており、データが欠損した場合、動画の該当部分は飛んでしまうのです。

しかし、プログレッシブはあくまでダウンロードのため、完全な動画を視聴することができます。
(YouTubeで動画を見てたけど通信環境のせいで飛んだりはしませんからね)

最後に

動画については正直まだまだわからないことが多いのですが、本記事が誰かの参考になれば幸いです。

関連記事

profile?atom?mp4のよくわからないあれこれ(profile編)


DACエンジニア採用情報

  関連記事

container
profile?atom?mp4のよくわからないあれこれ(profile編)

どうもこんにちわ。2年目のRhiannonです。 僕が入社した2014年は、来る来る詐欺で終わっていた動画広告元年が 現実のものとなり、最近では動画広告を目にすることも増えてきました。 ただ、動画は画像などに比べるとファイル自体が複雑なものになっています。 そのため、「動画ファイルってなんだかよく分 …

googleswiffy
FlashからHTML5へ 驚異の再現度Google Swiffy

GoogleChromeがウェブページ上にあるメイン以外のFlashコンテンツを停止する機能を公開 「えっ!?ChromeでFlash停止するようになっちゃうの!?」 6月8日に様々なIT系記事で取り上げられた話題ですが、 私は配信系ソリューションを担当しているので結構焦りましたね〜笑 Chrome …