scale
と同じようにリサイズ出来るフィルタだが、それとは別のリサイズ方法 point, spline16, spline36 が使える。ただし scale
と比べ処理が速くないのでリアルタイムエンコード、つまり配信用途なら処理が遅くても問題ない。scale
と違ってインターレース保持のリサイズは出来ない。現時点では ffmpeg の master で使える。
ffmpeg の scale
で使えるリサイズ方法:FFmpeg Scaler Documentation :: Scaler Options
公式ドキュメント: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
出力解像度の横幅
0 は入力と同じ。-1 はアスペクト比を揃えて縦解像度に合わせる - height, h
出力解像度の縦幅
0 は入力と同じ。-1 はアスペクト比を揃えて横解像度に合わせる - size, s
横幅x縦幅。使える書式 - dither, d
ディザーオプション- none。規定値
- ordered
- random
- error_diffusion
- filter, f
リサイズアルゴリズム- point
- bilinear。規定値
- bicubic
- spline16
- spline36
- lanczos
- range, r
カラーレンジ- input。規定値
- limited
- full
- primaries, p
カラープライマリー- input。規定値
- 709
- unspecified
- 170m
- 240m
- 2020
- transfer, t
トランスファー- input。規定値
- 709
- unspecified
- 601
- linear
- 2020_10
- 2020_12
- matrix, m
色空間マトリクス- input。規定値
- 709
- unspecified
- 470bg
- 170m
- 2020_ncl
- 2020_cl
縦横幅に使える書式
- in_w, iw
入力横幅 - in_h, ih
入力縦幅 - out_w, ow
出力横幅 - out_h, oh
出力縦幅 - a
iw / ih - sar
サンプルアスペクト比 - dar
(iw / ih) * sar - hsub, vsub
入力クロマサブサンプル値。yuv422p だと hsub は 2、vsub は 1 - ohsub, ovsub
出力クロマサブサンプル値。yuv422p だと hsub は 2、vsub は 1
基本コマンド
横幅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