ffmpeg にはフレームレートの設定方法がいくつかあるが、同じオプションでも指定場所では効果が違ったりするので一般的な用途のまとめ。オリジナルよりもフレームレートが少ないときは同じように間引かれるが、出力結果も一致するとは限らない。
- 0番から249番までの250フレーム、25fps の基本動画
ffmpeg -f lavfi -i testsrc=d=10,drawtext=fontfile="'C\:/Windows/Fonts/msgothic.ttc':text='%{n}':fontsize=30:x=W-tw:y=H-th" -vcodec utvideo input.mkv
- フィルタとしての
fps
オリジナルよりフレームレートが少なければ間引く、多ければ重複フレームをつくる。動画時間は変わらないコマンド例
ffmpeg -i input.mkv -vf fps=30 -vcodec utvideo output.mkv
- フィルタとしての
framerate
オリジナルよりフレームレートが少なければ間引く、多ければ前後フレームを平均して増やす。動画時間は変わらない。YUV限定でRGB出力不可コマンド例
ffmpeg -i input.mkv -vf framerate=30 -vcodec utvideo output.mkv
- 入力オプションとしての
r
総フレーム数はそのままに1秒あたりのフレームレートを指定するので、オリジナルよりフレームレートが少なければ映像時間が長く、多ければ映像時間が短くなるコマンド例
ffmpeg -r 30 -i input.mkv -vcodec utvideo output.mkv
- 出力オプションとしての
r
オリジナルよりフレームレートが少なければ間引く、多ければオリジナルのまま。動画時間は変わらないコマンド例
ffmpeg -i input.mkv -r 30 -vcodec utvideo output.mkv
dshow
としてのframerate
DirectShow 入力での入力フレームレート。SCFF などの仮想デバイスのように任意に指定できる場合と、キャプチャカードやウェブカメラのように任意に指定できない場合があるコマンド例
ffmpeg -rtbufsize 100MB -f dshow -framerate 30 -i video=device_name -vcodec utvideo output.mkv