ffmpeg でのフレームレート設定の違い


ffmpeg にはフレームレートの設定方法がいくつかあるが、同じオプションでも指定場所では効果が違ったりするので一般的な用途のまとめ。オリジナルよりもフレームレートが少ないときは同じように間引かれるが、出力結果も一致するとは限らない。

  • 0番から249番までの250フレーム、25fps の基本動画(手軽)
    ffmpeg -f lavfi -i testsrc2=d=10 -vcodec utvideo input.mkv

  • 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

  • フィルタとしての minterpolate
    フレーム補間フィルタなのでオリジナルよりも多い値を指定する。補間方法は平均と予測がある。ffmpeg でフレーム補間する minterpolate

    コマンド例(予測なのでかなり遅い)
    ffmpeg -i input.mkv -vf minterpolate=50 -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

  • 連番画像を入力するときのフレームレートを決める framerate
    連番画像を入力するときのフレームレートは r ではなくて framerate を使う方がより正確であり、公式ドキュメントを見ても設定項目に書いてある。

    コマンド例
    ffmpeg -framerate 30 -i img%03d.png out.mkv

    参考記事:【ffmpeg】動画から特定フレームを画像で出力する方法

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)