ffmpeg を使って動画を MotionJPEG へエンコードする方法

最近わりと流行っている(?)らしいデジタルフォトフレームだけど、自分で編集した動画を再生させるのは思いのほか大変だということがわかった。

Quicktime を使うと、APPLE MotionJPEG A と APPLE MotionJPEG B という2つのフォーマットで書き出すことができるが、これはどちらも再生されなかった。変換の際のフレームレートや詳細なオプション設定をいろいろと変更してもだめ。フォトフレームの製造元に問い合わせても「デジカメで撮影したムービーをそのまま再生する以外は非対応です」という、どう考えても納得しかねる回答しか得られなかった。


とはいえ、できないはずはないので、Linux や Mac OSX でも使えるフリーのソフトウェアである ffmpeg というコマンドラインツールを使って変換してみる。オプションの設定がややこしいので、マニュアルを見ながらコマンドを書く。非常にメジャーなソフトウェアだけあって、日本語でも十分な情報が手に入る。

しかし音声をつけて変換しようとするとなぜかエラーが出るので、-an オプションを付けてひとまず音声なしでエンコードしてみた。

$ ffmpeg -i test.mov -b 2000 -r 29.97 -s 640x480 -vcodec mjpeg -an test_out.mov

これで何とか映像が映るようになったが、見るからに色あせて精彩を欠いた絵になってしまう。まるで何十年も昔に撮ったフィルムを眺めているようで、とても使い物にならない。