1入力目の映像を2入力目の解像度を元にリサイズするscale2refの使い方。主な用途は異なる解像度の動画をフィルタ内で比較、参照したりするときに参照動画の解像度はscaleフィルタでは取得できないので、その代わりにscale2refフィルタを使う。使えるオプションはscaleフィルタと一部同じ。scaleフィルタの縦横幅に使える書式は2入力目の映像を元にし、1入力目の映像を元にするにはmainから始まるオプションを使う。

2024年5月3日のコミットで非推奨に変わったので、今後(7.0より先)はscaleフィルタで代用する。

リサイズする scale

基本コマンド

input1は640×360、input2は1280x720p。
input1の解像度は1280×720にリサイズされ、input2はそのままの例。
ffmpeg -i input1 -i input2 -filter_complex scale2ref[0v][1v] -map [0v] -map 0:a -c:a copy output1 -map [1v] -map 1:a -c:a copy output2

input1の解像度はinput2の4分の1にリサイズされ、input2はそのままの例。
ffmpeg -i input1 -i input2 -filter_complex scale2ref=1/4*iw:1/4*ih[0v][1v] -map [0v] -map 0:a -c:a copy output1 -map [1v] -map 1:a -c:a copy output2

input1をinput2の解像度にリサイズしてinput2を出力しない例。nullsinkを使うと出力を無効にできる。
ffmpeg -i input1 -i input2 -filter_complex scale2ref[0v][1v];[1v]nullsink -map [0v] -map 0:a -c:a copy output1

さらにリサイズアルゴリズムを変えるならflagsを使う。
ffmpeg -i input1 -i input2 -filter_complex scale2ref=flags=lanczos[0v][1v];[1v]nullsink -map [0v] -map 0:a -c:a copy output1

scaleフィルタで代用する。
ffmpeg -i input1 -i input2 -filter_complex scale=rw:rh:flags=bicubic[0v] -map [0v] -map 0:a -c:a copy output1

縦横幅に使える書式

  • main_w, main_h:入力横幅
  • main_a:iw / ih
  • main_sar:サンプルアスペクト比
  • main_dar, mdar:(iw / ih) * sar
  • main_hsub, main_vsub:入力クロマサブサンプル値。yuv422pだと hsubは2、vsubは1
  • main_n:0から始まるフレーム番号。eval=frameで使える
  • main_t:タイムスタンプ秒。eval=frameで使える
  • main_pos:デコード時点での合計ファイルサイズ。eval=frameで使える

公式ドキュメント:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

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