余白を追加することで、別のアスペクト比の映像に手軽に変換できる。ただし出力解像度が奇数になるとピクセルフォーマット次第で余白がずれたり、エンコードエラーになる。

リサイズする scale
映像を指定座標に切り取る crop

基本コマンド

下のコマンドでエラーが出るときはsetsar=1フィルタを最初に当てる。

オリジナルの解像度に横に60ピクセル、縦に20ピクセル追加し、映像を横に30ピクセル、縦に10ピクセルずらし、余白の色を白にする。
ffmpeg -i input -vf pad=w=iw+60:h=ih+20:x=30:y=10:color=white output
ffplay -i input -vf pad=iw+60:ih+20:30:10:ffffff
ffplay -i input -vf setsar=1,pad=iw+60:ih+20:30:10:ffffff

16:9の映像を横幅固定で4:3の映像にして中央に配置。
ffmpeg -i input -vf pad=y=-1:aspect=4/3 output
ffplay -i input -vf pad=y=-1:aspect=4/3
ffplay -i input -vf setsar=1,pad=y=-1:aspect=4/3

4:3の映像を縦幅固定で16:9の映像にして中央に配置。
ffmpeg -i input -vf pad=x=-1:aspect=16/9 output
ffplay -i input -vf pad=x=-1:aspect=16/9
ffplay -i input -vf setsar=1,pad=x=-1:aspect=16/9

次の方法でも行える:4:3を16:9に、16:9を4:3に余白をつける

Resizing videos with ffmpeg/avconv to fit into static sized player – Super User

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

オプション

  • width, w[string]
    出力解像度の横幅。0, iwは入力と同じ
    既定値:iw
  • height, h[string]
    出力解像度の縦幅。0, ihは入力と同じ
    既定値:ih
  • x[string]
    入力した映像の横座標のオフセット値。左が0になり右に向かって値が大きくなる。(iw-ow)/2-1で中央そろえになる
    既定値:0
  • y[string]
    入力した映像の縦座標のオフセット値。上が0になり下に向かって値が大きくなる。(ih-oh)/2-1で中央そろえになる
    既定値:0
  • color[color]
    追加した余白の色の指定。rrggbb形式も可能
    既定値:black
  • eval[int]
    リサイズの評価方法。動的にリサイズできるオプションがないので用途不明
    • init:1フレーム目で固定
    • frame:フレーム毎に変動
  • aspect[rational]
    出力解像度のアスペクト比の指定。縦または横の長さに合わせて出力解像度を変更する。1にすると縦横が同じサイズになり、16:9の映像に対して、16/9にすると変化がない
    既定値:0/1(オリジナルのまま)

縦横幅に使える書式

これも使える。ffmpeg で使える評価式

  • in_w, iw
    入力横幅
  • in_h, ih
    入力縦幅
  • out_w, ow
    横幅(width, w)で指定した値。縦幅の指定に横幅でリサイズした後の値を使うときに使う
  • out_h, oh
    縦幅(height, h)で指定した値。横幅の指定に縦幅でリサイズした後の値を使うときに使う
  • x
    xで指定した値。不明ならNAN
  • y
    yで指定した値。不明ならNAN
  • a
    iw / ih
  • sar
    サンプルアスペクト比
  • dar
    (iw / ih) * sar
  • hsub, vsub
    入力クロマサブサンプル値。yuv422pだとhsubは2、vsubは1

コメントを残す

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

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