FFmpeg、最初の第一歩
以前、配信用動画のフォーマットを変換する仕組みを作成するのに調査していたまま、まとめもなにもしないまま放置していたFFmpegの基本的な利用方法についてまとめてみます。
ちなみに何で放置してたかっていうと、最終的に色々な諸事情でmencoderを利用して動画のフォーマット変換することになったからです(笑)。mencoderについてもいずれ簡単にまとめてみたいと思います。
インストール
凝ったことをしないのであればLinuxならyumやapt-get、MacOS Xならmacportsを利用してインストールするのがお手軽です。例えばMacOS Xならこんな感じ。
sudo port -d install ffmpeg
あるいは
sudo port -d install ffmpeg-devel
なお、
port variants ffmpeg ffmpeg has the variants: no_gpl: disallow use of GPL code, license will be LGPL no_mmx: disable all x86 asm optimizations speex: enable Speex decoding via libspeex port variants ffmpeg-devel ffmpeg-devel has the variants: jack: Enable jack input device support (currently broken) no_gpl: disallow use of GPL code, license will be LGPL if +no_nonfree is selected no_mmx: disable all x86 asm optimizations no_nonfree: disallow use of nonfree code, libraries and binaries will be redistributable under GPL/LGPL speex: enable Speex decoding via libspeex
とあるので、variantsの設定はお好みに応じて設定ください。とはいえ実際に試してみたところMacOS X 10.4ではffmpeg-develのインストールに失敗するようですが(ffmpegは大丈夫)。
変換の基本
FFmpegにしてもmencoderにしても、googleなどで使い方を調べてるとすごい複雑なコードサンプルが掲載されてるページが多くて出てきて「これ、自分でも使えるのかなぁ?」と不安になりがちですが(ffmpeg -h
のヘルプの文章量もなかなか手強い……)、
ffmpeg (変換元ファイルのオプション指定) -i 変換元ファイル名 (変換後ファイルのオプション指定) 変換後ファイル名
で変換可能です。即ち最も最低限、且つ基本的なコンバートはとても簡単で、仮にinput.movをoutput.flvに変換したい場合は
ffmpeg -i input.mov output.flv
で変換できるということです。ちなみに変換後の動画フォーマットは変換後ファイル名の拡張子からFFmpegが対応する範囲で自動的に判別してくれます。で、これを基本として最適化のために色々なオプションを付加していくことになります。
変換元ファイルのオプション指定は高度な変換指定をする場合以外はそんなに利用する機会はないと思うんですが、例えばFFmpeg Documentationによると 入力ファイルのフレームレートを1fpsに強制し(raw フォーマットの場合のみ正しい)、出力ファイルのフレームレートを24fpsにする
場合の例として
ffmpeg -r 1 -i input.m2v -r 24 output.avi
といったサンプルが掲載されています。
変換後ファイルのオプション指定はだいたいビデオ用オプション、オーディオ用オプションに分かれ、変換後の動画に影響します。
主なビデオ用オプション
- -b bitrate
- ビデオのビットレートをbit/sで設定
- -vframes number
- 録画するビデオフレームの数を設定
- -r fps
- フレームレートをHzで設定
- -s size
- フレームサイズを設定。書式は”wxh”という書き方しますが’svga'(800×600)とか’xga'(1024×768)などを記述しても認識してくれます
- -aspect aspect
- アスペクト比を設定(FFmpeg Documentationによると4:3、16:9、1.3333、1.7777のどれか)
- -vcodec codec
- ビデオのコーデックを codec に強制する場合に指定
主なオーディオ用オプション
- -ab bitrate
- オーディオビットレートをbit/sで設定
- -ar freq
- オーディオサンプリング周波数をHzで設定
- -ab bitrate
- オーディオビットレートをbit/sで設定
- -acodec codec
- オーディオのコーデックを codec に強制する場合に指定
- -vol volumes
- 変換元動画の音量を256として音量を設定(2倍の音量にしたい時は512)
本文中でもこれまで何度かFFmpeg Documentationに触れてますが、本家のドキュメントの和訳ページで随分詳しい内容が記載されてますんでFFmpegを利用する際の大きな助けになると思います。