標準で使える scale フィルタの使い方。外部ライブラリに zscale フィルタがありこちらは HDR、高品質リサイズ向けで処理速度は scale フィルタより速くない。

Zライブラリを使ったリサイズフィルタ zscale

基本コマンド

アスペクト比を維持しながら横幅1280ピクセルにリサイズする。
ffmpeg -i input -vf scale=1280:-1 output

さらに縦幅が奇数になる場合には繰り上げて偶数にする。
ffmpeg -i input -vf scale=1280:-2 output

アスペクト比を維持しながら長辺1280ピクセルより大きいとき長辺1280ピクセルにリサイズする。小さければそのまま。
ffmpeg -i input -vf "scale=if(gte(iw\,ih)\,min(1280\,iw)\,-2):if(lt(iw\,ih)\,min(1280\,ih)\,-2)" output

リサイズ方法を lanczos に変える。
ffmpeg -i input -vf scale=1280:-2:flags=lanczos output
ffmpeg -i input -vf scale=1280:-2 -sws_flags +lanczos output

accurate_rnd を併用する。
ffmpeg -i input -vf scale=1280:-2 -sws_flags +accurate_rnd+lanczos output

ガンマ補正を行う。既定値では行わない。
ffmpeg -i input -vf scale=1280:-2 -gamma 1 output

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

オプション

  • width, w[string]
    出力解像度の横幅
    0 は入力と同じ。-1 はアスペクト比を揃えて縦解像度に合わせる。-n でnの倍数で割りきれるように繰り上げて調整する
  • height, h[string]
    出力解像度の縦幅
    0 は入力と同じ。-1 はアスペクト比を揃えて横解像度に合わせる。-n でnの倍数で割りきれるように繰り上げて調整する
  • size, s[string]
    横幅x縦幅。使える書式
  • flags[string]
    リサイズアルゴリズムの指定。設定値は後述
  • interl[boolean]
    インターレース保持のリサイズ指定
    • 0:保持しない。既定値
    • 1:保持する
  • in_color_matrix[string]
    入力カラーマトリクス
    • auto:既定値
    • bt709
    • fcc
    • bt601
    • smpte240m
  • out_color_matrix[string]
    出力カラーマトリクス
    設定値は in_color_matrix と同じ
  • in_range[int]
    入力カラーレンジ
    • auto, unknown
    • jpeg, full, pc
    • mpeg, limited, tv
  • out_range[int]
    出力カラーレンジ
    設定値は in_range と同じ
  • force_original_aspect_ratio[int]
    縦横どちらに合わせアスペクト比維持してリサイズするか
    • 0, disable:無効。既定値
    • 1, decrease:短い方に合わせる
    • 2, increase:長い方に合わせる
  • param0, param1
    不明
  • eval[int]
    リサイズの評価方法。動的にリサイズできるオプションがないので用途不明
    • init:1フレーム目で固定
    • frame:フレーム毎に変動

縦横幅に使える書式

これも使える。ffmpeg で使える計算書式

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

リサイズアルゴリズム

s でのリサイズと、vfscale フィルタを使い flags を指定しない場合は bicubic が使われるが、filter_complexscale フィルタを使い flags を指定しない場合は bilinear が使われて、vf, filter_complex で使われるアルゴリズムが異なる。

  • fast_bilinear
  • bilinear
  • bicubic
  • experimental
  • neighbor
  • area
  • bicublin
  • gauss
  • sinc
  • lanczos
  • spline
  • print_info
  • accurate_rnd
  • full_chroma_int
  • full_chroma_inp
  • bitexact

公式ドキュメント:FFmpeg Scaler Documentation : sws_flags

コメントを残す

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

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