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

基本コマンド

下のコマンドでエラーが出るときは 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=(ih-oh)/2:aspect=4/3 output
ffplay -i input -vf pad=y=(ih-oh)/2:aspect=4/3
ffplay -i input -vf setsar=1,pad=y=(ih-oh)/2:aspect=4/3

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

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

任意のアスペクト比、例は16:9で余白を追加し映像は中央に配置。
ffmpeg -i input -vf pad=w=0:h=0:x=(iw-ow)/2:y=(ih-oh)/2:color=ffffff:aspect=16/9 output
ffplay -i input -vf pad=w=0:h=0:x=(iw-ow)/2:y=(ih-oh)/2:color=ffffff:aspect=16/9

特定の解像度比にしたい場合は少し計算する。-1 の部分を -n でその倍数の解像度になるが映像のピクセルフォーマットによっては奇数解像度は切り捨てる。
ffmpeg -i input -vf pad=w=-1*lt(iw*oh\,ih*ow):h=-1*gt(iw*oh\,ih*ow):x=(iw-ow)/2:y=(ih-oh)/2:color=ffffff:aspect=16/9 output
ffplay -i input -vf pad=w=-1*lt(iw*oh\,ih*ow):h=-1*gt(iw*oh\,ih*ow):x=(iw-ow)/2:y=(ih-oh)/2:color=ffffff:aspect=16/9

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

オプション

アスペクト比をそろえての小数点以下切り捨て、繰り上げの内容が間違っているかもしれない。

  • width, w[string]
    出力解像度の横幅
    iw は入力と同じ。0、-1 はアスペクト比を揃えて縦解像度に合わせて切り捨てる。-n でnの倍数で割りきれるように繰り上げて調整する
    既定値:iw
  • height, h[string]
    出力解像度の縦幅
    ih は入力と同じ。0、-1 はアスペクト比を揃えて横解像度に合わせて切り捨てる。-n でnの倍数で割りきれるように繰り上げて調整する
    既定値:ih
  • x[string]
    入力した映像の横座標のオフセット値。左が0になり右に向かって値が大きくなる
    既定値:0
  • y[string]
    入力した映像の縦座標のオフセット値。上が0になり下に向かって値が大きくなる
    既定値: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

コメントを残す

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

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