debian linuxで手軽にプログレッシブ再生可能なh.264ファイルをエンコード

はじめに

apt-getで入手できるパッケージだけを使って、Flash Playerでプログレッシブ再生可能なh.264動画を作成する方法のメモです。ffmpeg関係は何かとハマる作業が多いのですが、この方法は僕が今まで試した中で一番手軽でした。

ffmpegとgpacのインストール

apt-getだけといっても標準のリポジトリではパッケージが足りないので、www.debian-multimedia.orgがsources.listにあることが前提です。ない場合は/etc/apt/sources.listに以下を追加、debianのバージョン指定は読み替えて下さい。

deb http://www.debian-multimedia.org etch main

h.264エンコードするためにffmpegを、出力されたmp4ファイルをプログレッシブ再生可能にするためにgpacを使います。両方ともwww.debian-multimedia.orgにあるので、apt-getでインストールします。

apt-get install ffmpeg gpac

mp4ファイルの作成

あとはお好みのオプションでmp4ファイルにエンコード。しかし、このmp4ファイルはメタデータの位置がメディアデータより後ろにあり、このままでは全てのデータを読まないと再生できないそうです。

ffmpeg -i hoge.avi -f mp4 -vcodec h264 -acodec aac piyo.mp4

プログレッシブ再生を可能にするには、ffmpegで吐き出したmp4ファイルをMP4Boxで出力し直して、メタデータがメディアデータの前に来るよう、ボックスを並び替えてやれば良いようです。

MP4Box -add piyo.mp4 -new fuga.mp4

感想

On2VP6を使った高画質なflvファイルをWindows以外の環境でエンコードするのは難しかったのですが、比較的新しいFlash Playerではコーデックとしてh.264がサポートされたため、LinuxできれいなFlash用ムービーを作るのが格段に簡単になった印象です。

ただし自分でffmpegをビルドしていないので、扱えるフォーマットがやや限られています。例えばsvn版ではサポートしているらしいwmv3がデコードできないため、ソースがwmvだと色々と不便がありそうです。