映像を指定座標に切り取る crop フィルタの使い方。出力解像度はフレーム毎に変更できないがクロップする場所はフレーム毎に変更できる。

基本コマンド

中央から縦横100ピクセルにクロップする
ffmpeg -i input -vf crop=w=100:h=100 output
ffplay -i input -vf crop=100:100

左上からクロップするには x, y を 0 にする
ffmpeg -i input -vf crop=w=100:h=100:x=0:y=0 output
ffplay -i input -vf crop=100:100:0:0

左から1フレーム1ピクセル毎に移動する
ffmpeg -i input -vf crop=w=100:h=100:x=n output
ffplay -i input -vf crop=100:100:n

クロップする場所を動かすコマンド例
映像の上に映像をのせる overlay | 応用例

公式ドキュメント:FFmpeg Filters Documentation : crop

オプション

  • w, out_w[string]
    出力解像度の横幅
    既定値:iw
  • h, out_h[string]
    出力解像度の縦幅
    既定値:ih
  • x[string]
    クロップする場所の横座標の指定。評価式が使える
    既定値:(in_w-out_w)/2
  • y[string]
    クロップする場所の縦座標の指定。評価式が使える
    既定値:(in_h-out_h)/2
  • keep_aspect[boolean]
    出力解像度のアスペクト比を入力した映像のアスペクト比に変える。しかし挙動がよく分からない
    既定値:0
  • exact[boolean]
    クロマサブサンプルによっては数値が丸められて指定した値でクロップしないのを指定した値でクロップする
    既定値:0

x, y に使える評価式

ffmpeg で使える計算書式 を使って複雑な計算ができる。

  • x:x で指定した値
  • y:y で指定した値
  • in_w, iw:入力横幅
  • in_h, ih:入力縦幅
  • out_w, ow:横幅(w, out_w)で指定した値
  • out_h, oh:縦幅(h, out_h)で指定した値
  • hsu:横方向のクロマサブサンプル値。yuv422p なら 2
  • vsub:縦方向のクロマサブサンプル値。yuv422p なら 1
  • n:映像のフレーム数。0開始
  • pos:映像のバイトサイズの位置。不明なら NAN
  • t:映像のタイムスタンプ秒。不明なら NAN

コメントを残す

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

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