WEB動画作成時に”ムーブアトム(moov atom)を先頭に含める”ための具体的な方法

以前「Youtube用動画に最適なエンコード値とエンコーダの設定メモ」という記事を書きましたが、実は私自身Youtube側が用意した推奨値の説明部分に耳慣れない言葉がいくつかありました。

その中のひとつが、コンテナ「MP4」の説明部分に注釈として記載されていた"ファイルの先頭にmoovアトムを含めます(ファスト スタート)"という文言です。

この「moovアトム」とは一体何のことで、そして、それを「先頭に含める」というのは具体的にどのようなことを指すのでしょうか?

それらについて調べましたので、補足情報としてここにメモしておきます。

moov atomとは?

まずは "moovアトム"について簡単に概要を確認しておきましょう。

MP4では、ファイルを構成している各データを、種類ごとに「atom(アトム)」という塊に分けて管理しています。

atomには主要なものが3つあり、moovアトム(moov atom)はそのうちの一つです(・参考:profile?atom?mp4のよくわからないあれこれ(atom編) | DACエンジニアブログ:アドテクゑびす界さん)。

・ftyp atom:ファイルタイプが記述されている

・moov atom:動画のサイズや再生時間などの各種メタ情報が格納されている

・mdat atom:映像データ、音声データ本体が格納されている

MP4ファイル全体のインデックス情報(各種メタ情報)を格納しているのがmoovという名前のatomになります。

moov atomの位置が重要なワケ

では、なぜmoov atomの位置が Youtube用動画のエンコード時に重要になるのでしょうか?

それは、WEB上の動画再生ソフト(つまりYoutubeなど)では、このmoov atomデータを読み込まないと再生が開始できない仕組になっているからです。

moov atom が ファイルの後ろの方に格納されていた場合、Youtube側は再生を開始する前に、まず 頭からmoov atomがある場所まで・・・つまり全データを読み込む必要があります。

これは例えば、PC上のストレージに保存した動画データを再生するような場合には問題になりませんが、Youtubeのようにデータをダウンロードしつつ同時に再生を行う プログレッシブダウンロード方式のサービスにおいては、致命的な欠陥になってしまうわけです。 はじめに数百Mb~数Gb程度の全動画データをダウンロードしないと再生がスタートできないわけですから。

ですから、Youtubeでは「MP4で書き出す際にはmoov atomをファイルの先頭に持ってきてね」と注釈しているわけです。

ファストスタートとは?

また、このように動画ファイルをネットでの再生環境に適応させることを「ファストスタートにする」「WebOptimisedする」「ストリーミングに最適化する」といいます。

下の写真は無料エンコーダのHandBrakeのエンコード設定画面です。
チェック項目の一つに「Web Optimized」というのがあります。これがmoov atomの位置を先頭に持ってくるための設定項目になっているわけです。

moov008

MP4ファイル内のatomの位置を確認する方法

では、今手元にあるMp4動画データにおいて、そのファイルがファストスタートになっている(moov atomが先頭に来ている)かどうかを確認するにはどうすればよいのでしょうか?

内部構造を確認するには「MP4reader」というツールが便利です。

操作は簡単で「File>Open」でチェックしたいMP4の動画ファイルを選択するだけです。

moov001

ポイントになるのは「moov(メタ情報)」と「mdat(動画データ本体)」の位置関係です。

ファストスタートになっていない場合

Web optimizedにチェックを入れなかったもの…すなわちファストスタートの設定をせずに書き出したものをMP4readerで表示させると以下のようになります。

moov002

mdatがよりもmoovが下にきていますね。

ファストスタートになっている場合

こちらは、Web optimizedにチェックを入れて書き出した方の動画です(※動画の内容は全く一緒です)。

moov003

このようにmdatよりもmoovが上に来ていれば、その動画は「ファストスタートになっている」ということになります。

注) ファストスタートにした場合でも一番上は常に「ftyp」になります。moov atom が mdat atomよりも先に来ている場合が"ファストスタートになっている状態"ということになります。

moov atomの位置を変更する方法

それでは実際にmoov atomの位置を指定してファストスタートのMP4動画ファイルを作成するにはどうすればよいのでしょうか?

(1)既に作成済みの動画をファストスタートにする

既に書き出し済みのMP4動画ファイルをファストスタートするためには Data Go Round,LLCさんの「MP4 FastStart」というツールが便利です。

MP4 FastStartを起動したら「OpenFolder」ボタンをクリックして、ファストスタートにしたいMP4動画を含むフォルダを選択します。ちなみにMP4以外の動画は選択できません(.m4vもダメ)。

moov004

ファイル名が表示されたら それを選択した状態で、「Make FastStart」ボタンを押します。

moov005

上図のように、Log部分に「Completed:(ファイル名)」と出れば終了です。
「No Files selected」と出てしまう場合は、ファイル名をクリックしてきちんと選択状態にしてください(説明図の2)。

ツール使用前と後を比べてみたのが以下の画像です。

ツール使用前

moov006

ツール使用後

moov007
 
無事にMoovアトムが、mdatよりも上に来ました。

(2)これから書き出す動画をファストスタートにする

これからMP4動画を新規に書き出す場合は、エンコーダ側でファストスタートの設定をしてあげましょう。

HandBrakeから書き出す場合

HandBrakeをはじめとするエンコードソフトの多くには「Web Optimized」などのチェック項目があります。 ここにチェックをいれることで、ファストスタートにすることができます。

moov008

EDIUS(ver6)から書き出す場合

私が使用しているver6においては、MP4書き出し時(h264/AVC)に、特にファストスタートの設定項目はありません。
書き出した動画ファイルはmoovアトムがお尻に来ているため、上述のMP4 FastStartなどを使ってファストスタートに変換する必要があります。

moov009

ADOBEソフトから書き出す場合

CC2014現在のAdobe製品(MediaEncorder、AfterEffectsの動画書き出し)においては、H264書き出し時に特にmoovAtomの位置に関する設定項目がありません。

そこで公式サポートに問い合わせてみたところ MP4の書き出しに関してはデフォルトでファストスタートで書き出すようになっているそうです。

Adobe:弊社Media EncoderのCC 2014バージョンにはmoovatomについてのカスタム設定が出来る項目がございません。また、書き出し時はデフォルトで基本的にヘッダー配置(先頭)になるように設定されております。

Q:例えばYoutubeにUPする際などは「moov atomを先頭にするように」とされていますが、これはMedia Encorderから書き出す分には、特別に設定しなくても大丈夫ということでしょうか? 他のバージョン(2015など)では設定が可能ですか? AEなどから書き出す際は設定が可能だったりしますか?

Adobe:はい、基本的に先頭で設定されているのでご自身で設定する必要はございません。申し訳ございませんが、AeやCC 2015でもカスタム設定する項目はございません。

ただし 過去のアドビの記事によるとCS2あたりまでは デフォルトだとmoovAtomがお尻にくるような仕様になっていた模様です。

バージョンによって挙動が変わってくるので、まずは作成した動画をMP4readerなどで確認してみましょう。

参考にさせて頂いたサイト

profile?atom?mp4のよくわからないあれこれ(atom編)-DACエンジニアブログ:アドテクゑびす界さん-

MP4ファイルのFast Start -yamaq blogさん-

[動画処理] MP4動画をプログレッシブダウンロード再生するには-端くれプログラマの備忘録さん-

MP4/3GPP/3GPP2ファイルフォーマットの基礎知識-unoh.github.comさん-

お勉強:マルチメディア- FLV動画のエンコード -exB -extreme B-AREAさん-

Flash Playerにおける高解像度H.264ビデオおよびAACオーディオのサポートについての説明-Adobeさん-

Understanding the MPEG-4 movie atom -Adobeさん-

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です