一部のフィルタ(現在では blend, convolve, deconvolve, libvmaf, lut3d, overlay, psnr, ssim) で設定できる動画時間が異なるファイルの挙動設定を行う framesync の設定方法。以前は個別のフィルタ毎に設定していたがこれのおかげで設定内容が統一された。

公式ドキュメント:FFmpeg Filters Documentation : Options for filters with several inputs (framesync)

記事にしているフィルタ

オプション

  • eof_action[int] 2ファイル目が終了したときの1ファイル目の挙動指定
    • 0, repeat
      最終フレームを繰り返す
      既定値
    • 1, endall
      両方のファイルを最後まで読み込む
    • 2, pass
      1ファイル目が終了したら2ファイル目に切り替える
  • shortest[boolean]
    時間の短いファイルが最後まで処理したら終了する
    既定値:0(終了しない)
  • repeatlast[boolean]
    時間の短いファイルが最後まで処理し、時間の長いファイルが最後まで処理し終わるまで、時間の短いファイルの最終フレームを繰り返す
    既定値:1(繰り返す)

コマンド例

eof_action の挙動について。以下の overlay フィルタは2ファイル目(白)が映像に載る。4番目以降のコマンド例は overlay フィルタの読み込み順を入れ換えている。

2ファイル目(白)を最後まで読み込む。
ffmpeg -f lavfi -i color=d=2 -f lavfi -i color=c=white:d=4 -filter_complex overlay=eof_action=0,realtime -f sdl -

2コマンドとも2ファイル目(白)が開始2秒で止まる。
ffmpeg -f lavfi -i color=d=2 -f lavfi -i color=c=white:d=4 -filter_complex overlay=eof_action=1,realtime -f sdl -
ffmpeg -f lavfi -i color=d=2 -f lavfi -i color=c=white:d=4 -filter_complex overlay=eof_action=2,realtime -f sdl -

2秒まで1ファイル目(黒)でそれ以降は最終フレームが4秒まで続く。
ffmpeg -f lavfi -i color=d=2 -f lavfi -i color=c=white:d=4 -filter_complex [1][0]overlay=eof_action=0,realtime -f sdl -

1ファイル目(黒)が2秒で止まる。
ffmpeg -f lavfi -i color=d=2 -f lavfi -i color=c=white:d=4 -filter_complex [1][0]overlay=eof_action=1,realtime -f sdl -

1ファイル目(黒)が2秒まで読み込み終わると2ファイル目(白)に切り替えてさらに4秒まで続く。
ffmpeg -f lavfi -i color=d=2 -f lavfi -i color=c=white:d=4 -filter_complex [1][0]overlay=eof_action=2,realtime -f sdl -

コメントを残す

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

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