ffmpegのフィルタの中には効果を与えるのに期間(区間)、以上、未満、毎の時間の条件をつけることができるものがある。これらをつけられるのはffmpeg -filtersで調べたときにTと表示されるフィルタである。

ffmpeg -filters using Gyan ffmpeg

関連フィルタにsendcmd、asendcmdのコマンド対応がある。こちらは任意の時間の他にパラメータも任意に変更できる。
任意に時間や、効果を変えられるsendcmd、asendcmdフィルタの使い方

オプション

  • t
    0から始まるタイムスタンプ秒。1フレーム目の経過時間が最初の値になる
  • n
    1から始まるフレーム番号
  • pos
    バイトサイズ。例:’between(pos\,0\,10M)’ 10MBまで有効にする
  • w, h
    入力映像の横と縦の解像度値

公式ドキュメント:FFmpeg Filters Documentation : Timeline-editing

使い方

注意点としてタイムライン編集を使ってオプションを指定するとき、フィルタのオプション名を省略しないこと。省略するとエラーが出たり、引数を認識しないことがあるため。これを回避するにはオプションの最後にenableで有効にする時間を指定する。

enable=1ですべてのフレームが有効になるが、正確には0.5以上ならすべてのフレームが有効になる。

本来の効果。
ffplay -f lavfi testsrc2 -vf lutyuv=0:val:val

0が反映されていない。
ffplay -f lavfi testsrc2 -vf lutyuv=enable='between(t\,1\,2)':0:val:val

これなら反映される。
ffplay -f lavfi testsrc2 -vf lutyuv=enable='between(t\,1\,2)':y=0:u=val:v=val

enableを末尾につければ引数のオプション名を明記しなくてもよい。
ffplay -f lavfi testsrc2 -vf lutyuv=0:val:val:enable='between(t\,1\,2)'

10秒から180秒までsmartblurフィルタを当てる。
smartblur=enable='between(t\,10\,3*60)'

3秒までcurvesのプリセットcross_processを指定する。
curves=preset=cross_process:enable='lte(t\,3)'

3秒からcurvesのプリセットcross_processを指定する。
curves=preset=cross_process:enable='gte(t\,3)'

1秒から3秒までと4秒から5秒までsmartblurフィルタを当てる。
noise=alls=100:allf=t+u:enable='between(t\,1\,3)+between(t\,4\,5)'

2秒ごとに1秒間(0から1秒、2秒から3秒…)smartblurをかける
smartblur=enable='lt(mod(t\,2)\,1)'

この書式が使える:ffmpeg で使える評価式
発展的な使い方:2入力する映像のフィルタを詳しく設定する
強弱をつける:時間でフィルタに強弱をつける

ベンチマークについて

1入力フィルタをタイムライン編集で無効にするときはフィルタ自体が無効になるのでベンチマークは大幅には改善する。一方で2入力以上のフィルタをタイムライン編集で無効にしたときはベンチマークは有効時よりも改善するが、2入力していることには変わりないのでベンチマークは大幅に改善しない。

ベンチマークが下ほど悪くなる。
ffmpeg -f lavfi -i color -f lavfi -i testsrc2 -filter_complex null -f null -
ffmpeg -f lavfi -i color -f lavfi -i testsrc2 -filter_complex overlay=enable=0 -f null -
ffmpeg -f lavfi -i color -f lavfi -i testsrc2 -filter_complex overlay=enable=1 -f null -

タイムライン編集ができるフィルタの中から紹介したことのある記事

新しいフィルタはテーブルが未更新。

blend YUV RGB を比較計算する blend
chromakey ffmpeg でクロマキー合成 その2
colorbalance Windows の ffmpeg で生放送する方法 : カラーバランス
colorchannelmixer RGBA の各値を別のチャンネルに混ぜ合わせる colorchannelmixer の使い方
colorkey ffmpeg でクロマキー合成
colormatrix Youtube にアップロードする時に注意する colormatrix の設定
curves トーンカーブで RGB の調整が出来る curves
delogo ffmpeg できれいにロゴを消す方法
dilation ffmpeg で OpenCV フィルタを使う
drawbox ニコ生のTSからサムネイルを出力する【ffmpeg】動画から特定フレームを画像で出力する方法
drawgrid 一定間隔で映像に線を引く drawgrid
drawtext YUV、彩度、色相 を見える化する signalstatsWindows の ffmpeg で生放送する方法 : テキスト
edgedetect ffmpeg でエッジ検出をする edgedetect
erosion ffmpeg で OpenCV フィルタを使う
framestep 【ffmpeg】動画から特定フレームを画像で出力する方法
hqdn3d ニコ生で使うデノイズフィルタの例Windows の ffmpeg で生放送する方法 : 3次元デノイズフィルタ
lut ffmpeg できれいにロゴを消す方法
maskedmerge マスクして2入力を合わせる maskedmerge
pp デノイズとインターレース解除ができる pp
removelogo ffmpeg できれいにロゴを消す方法
selectivecolor RGB, CMYK を個別に調整できる selectivecolor
smartblur ffmpeg でモーションブラーを掛ける
unsharp ニコ生で使うデノイズフィルタの例
w3fdif インターレース解除フィルタ w3fdif
yadif 一番メジャーなインターレース解除フィルタ yadif

コメントを残す

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

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