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


scale と同じようにリサイズ出来るフィルタだが、それとは別のリサイズ方法 point, spline16, spline36 が使える。ただし spline16, spline36scale で設定できるオプションと比べ処理が速くないのでリアルタイムエンコード、つまり配信用途なら処理が遅くても問題ない。scale と違ってインターレース保持のリサイズは出来ない。3.0 以降で使える。

ffmpeg の scale で使えるリサイズ方法:FFmpeg Scaler Documentation :: Scaler Options

基本コマンド

横幅640に縦幅はアスペクト比を揃えて bilinear のディザーなしにリサイズ
ffmpeg -i input -vf zscale=640:-1 -c:a copy output

横幅を半分に縦幅はアスペクト比を揃えて spline16 のディザーなしにリサイズ
配信用途では指定解像度に spline16 のディザーなしがおすすめ
ffmpeg -i input -vf zscale=iw/2:-1:f=spline16 -c:a copy output

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

インストール方法

releases では v2.0 以上を使う。

$ git clone git://github.com/sekrit-twc/zimg zimg
$ cd zimg
$ autogen.sh
$ ./configure --prefix="/mingw/i686-w64-mingw32"  --build="i686-w64-mingw32" --host="i686-w64-mingw32"
$ make -j 2 && make install

ffmpeg には --enable-libzimg をつけて、実行には bin にインストールされた libzimg-2.dll が必要。

libzimg-2.dll を個別にしない場合は zimg の configure に
--disable-shared --enable-static をつけて、
zimg.pc の Libs: に -lstdc++ を追加する。

Libs: -L${libdir} -lzimg -lstdc++

オプション

  • width, w[string]
    出力解像度の横幅
    0 は入力と同じ。-1 はアスペクト比を揃えて縦解像度に合わせる
  • height, h[string]
    出力解像度の縦幅
    0 は入力と同じ。-1 はアスペクト比を揃えて横解像度に合わせる
  • size, s[string]
    横幅x縦幅。使える書式
  • dither, d[int] ディザーオプション
    • 0, none:既定値
    • 1, ordered
    • 2, random
    • 3, error_diffusion
  • filter, f[int] リサイズアルゴリズム
    • 0, point
    • 1, bilinear:既定値
    • 2, bicubic
    • 3, spline16
    • 4, spline36
    • 5, lanczos
  • range, r[int] 出力カラーレンジの指定
    • -1, input:既定値
    • 0, limited
    • 1, full
  • primaries, p[int] 出力カラープライマリーの指定
    • input:既定値
    • 709
    • unspecified
    • 170m
    • 240m
    • 2020
  • transfer, t[int] 出力トランスファーの指定
    • input:既定値
    • 709
    • unspecified
    • 601
    • linear
    • 2020_10
    • 2020_12
  • matrix, m[int] 出力色空間マトリクスの指定
    • input:既定値
    • 709
    • unspecified
    • 470bg
    • 170m
    • 2020_ncl
    • 2020_cl
  • rangein, rin[int] 入力カラーレンジの指定
    • input:既定値
    • limited
    • full
  • primariesin, pin[int] 入力カラープライマリーの指定
    • input
    • 709
    • unspecified
    • 170m
    • 240m
    • 2020
  • transferin, tin[int] 入力トランスファーの指定
    • input
    • 709
    • unspecified
    • 601
    • linear
    • 2020_10
    • 2020_12
  • matrixin, min[int] 入力色空間マトリクスの指定
    • input
    • 709
    • unspecified
    • 470bg
    • 170m
    • 2020_ncl
    • 2020_cl
  • chromal, c[int] 出力クロマロケーションの指定
    • input
    • left
    • center
    • topleft
    • top
    • bottomleft
    • bottom
  • chromalin, cin[int] 入力クロマロケーションの指定
    • input
    • left
    • center
    • topleft
    • top
    • bottomleft
    • bottom
  • npl[double]
    名目輝度のピーク値の指定。zimg 2.3.0 以上
    既定値:nan
    範囲:0 から DBL_MAX
  • agamma[boolean]
    近似ガンマを許可する。zimg 2.3.0 以上
    既定値:1(許可)
    範囲:0 と 1

縦横幅に使える書式

これも使える。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

追記
オプション項目を追加した。2016年8月17日
オプション項目を追加した。2016年11月12日

コメントを残す

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

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