[動画処理] MP4動画をプログレッシブダウンロード再生するには

MP4形式の動画をプログレッシブダウンロード再生する方法を覚え書き。プログレッシブダウンロードをサポートすることにより、動画ファイル全体がダウンロードされるのを待たずに、ダウンロードしながら動画再生できるようになる。

プログレッシブダウンロードに対応した動画プレイヤーを使う

Adobe Flashで書かれたプレーヤーなら大抵対応しているかも。

動画はコーデック H.264 でエンコードしておく

たぶん H.264 でエンコードしておくのが一番間違いなさそう。

MP4ファイルを Fast Start 仕様にしておく (moov atom の変更)

Fast Start すなわち「早く始まる」仕様。そのようにMP4ファイルを簡単に変換するソフトが多数あるので難しいことはない。

MP4のファイル構造について。MP4ファイルの内部データはatomと呼ばれる塊ごとに管理されていて、atomの1つの種類にmoovと呼ばれるものがある。moov atomには動画のインデックス情報が格納されていて、普通の(Fast Start仕様ではない)MP4ファイルではファイル末尾に付加されている。動画プレイヤーは動画再生にmoov atomを必要とするので、ファイル末尾にそれがあるならば、ファイル全体がダウンロードされるまでは再生を始められない。このmoov atomをファイルの先頭に格納しておけば、ダウンロード開始直後から動画再生が可能になるというわけ。そういった細工を施したMP4ファイルが俗にFast Startと呼ばれているようだ。

Data Go Round Lab のフリーソフト MP4 FastStart を使うと、MP4ファイルをFast Start仕様に変更できる。操作は至って簡単で、[Open Folder] ボタンをクリックしてフォルダを選ぶとフォルダ内のファイルが一覧されるので、一覧からMP4ファイルを選んで [Make FastStart] ボタンをクリックするだけ。いろんなソフトを試したけど、このソフトが一番簡単だった。

Data Go Round Lab
http://www.datagoround.com/lab/

ffmpegでも -movflags +faststart オプションを付加することで、エンコードされたMP4ファイルをFast Start仕様にすることができる。可能であればエンコード時に一緒にやってしまうと手間が少なくと済みそう。

参考サイト

Understanding the MPEG-4 movie atom | Adobe Developer Connection
http://www.adobe.com/devnet/video/articles/mp4_movie_atom.html

Video Learning Guide for Flash: Progressive and streaming video | Adobe Developer Connection
http://www.adobe.com/devnet/flash/learning_guide/video/part02.html