1入力目の映像を2入力目の解像度を元にリサイズするscale2ref
の使い方。主な用途は異なる解像度の動画をフィルタ内で比較、参照したりするときに参照動画の解像度はscale
フィルタでは取得できないので、その代わりにscale2ref
フィルタを使う。使えるオプションはscale
フィルタと一部同じ。scale
フィルタの縦横幅に使える書式は2入力目の映像を元にし、1入力目の映像を元にするにはmainから始まるオプションを使う。
2024年5月3日のコミットで非推奨に変わったので、今後(7.0より先)は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で使える
公式ドキュメント: