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

基本コマンド

下のコマンドでエラーが出るときは 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に余白をつける

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

オプション

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

コメントを残す

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

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