ffmpegとは

一応本題。

ffmpegとはなんぞや、と言うと、簡潔に言えば「現状よく使われているコンテナ/映像/音声それぞれの形式を変換できるソフト」です*1。最近流通しているものであれば、十中八九対応しているはず。映像コーデックだけ変えたい、とか、コンテナを…とか、でもコマンド一発。最近流行のmov/H.264/AACでも無問題。コマンド一発。

内部的には、一部のコーデック*2については各種ライブラリをリンクすることでエンコード/デコード処理を行っており、それ以外のコーデック形式については自前処理のようです。開発は相当速いスピードで進んでいるようで、コンパイルオプションが変わることもしばしば。そのため、特定の版のコンパイル済みバイナリは公式配布しないという姿勢がとられています*3

動画編集の際、コンテナ形式、映像コーデック、音声コーデックそれぞれで形式変換を行いたい場合、ffmpegが一本あれば十分に間に合います。既に他の動画変換ソフト使ってるよ、という人も多いと思いますが、各コンテナ/コーデック形式に合わせて実装するのが面倒くさい*4ため、実際には巷に溢れる動画変換と銘打ったソフトの数多くが実処理をffmpegに丸投げしていることが多いです*5。逆に言うと、ffmpegコマンドラインベースな為に使いにくいのであれば、既に大量にあるGUIフロントエンドとなるソフトを選べばいいのです。例えば MediaCoder とか。

Windows Mediaについて

ffmpeg が対応しているWindows Media系フォーマットは wmv1/wmav1, wmv2/wmav2, wmv3 の三種類あり、前二つはエンコード/デコード対応、wmv3についてはデコードのみ対応しています。

この理由についてはよくわからないのですが、wmv として広く流通している、いわゆるWindows Media 9(VC-1)は wmv3 であり、現状では ffmpeg が対応していない以上、 Windows Media 形式に変換するには ffmpeg では不向きであり、公式のエンコーダーを使うのが無難です。

*1:実際にはストリーミングサーバーとして使えたりもするので、それだけじゃないんだけどね。

*2:faac, x264, xvid, mp3lame, amr, a52, etc...

*3:というのは建前で、実際には対応形式が多すぎる故にコンパイルがめんどくさい、特許関係で揉めたくない、などというのがあるのではないかと。

*4:のと、車輪の再発明になりかねない

*5:携帯動画変換君は有名な例。