モノクロで点滅する効果を作る


YUV の映像なら彩度を 0 にするか、UV を 128 にする方法で、RGB の映像なら RGB 各値をそれぞれ一定倍率を掛け合わせる方法をとり、点滅するフレーム間隔を指定するのにタイムライン編集を行う。

特定の区間だけフィルタを当てるタイムライン編集について

YUV の映像

lut, hue フィルタを使った2つの方法がある。
ffplay -f lavfi -i testsrc2,lut=val:128:128:enable='st(0,between((mod(n,4)),0,1));ld(0)*between(t,3,4)+ld(0)*between(t,6,7)'
ffplay -f lavfi -i testsrc2,hue=s=0:enable='st(0,between((mod(n,4)),0,1));ld(0)*between(t,3,4)+ld(0)*between(t,6,7)'

利用したフィルタ
Windows の ffmpeg で生放送する方法 : LUT(ルックアップテーブル)
色相を動的に変更できる hue

タイムライン編集の解説

  • st(0,expr) , ld(0)
    st(0,expr) で計算した結果を ld(0) で返している。計算の種類が増える場合は st(1,expr), ld(1) と値を変えれば値に対応した計算を行う
  • between((mod(n,4)),0,1)
    n は 1 から始まるフレーム番号。4フレーム毎の余りを計算し、結果が 0 と 1 の時に 1 (有効)を返し、2 と 3 の時に 0(無効)を返す
    余りの値は12301230123…
    between() を使って10011001100… となる
  • ld(0)*between(t,3,4)+ld(0)*between(t,6,7)
    t は 1フレーム目の経過時間から始まるタイムスタンプ秒。3秒から4秒の間と6秒から7秒の間で lut, hue フィルタを有効にする。時間間隔ではなくフレーム間角で有効にするには t の代わりに n を使う

RGB の映像

ffplay -f lavfi -i testsrc,colorchannelmixer=.3:.59:.11:0:.3:.59:.11:0:.3:.59:.11:enable='st(0,between((mod(n,4)),0,1));ld(0)*between(t,3,4)+ld(0)*between(t,6,7)'
利用したフィルタ
RGBA の各値を別のチャンネルに混ぜ合わせる colorchannelmixer の使い方

点滅するフレーム間隔を変える

  • 1フレーム毎に点滅し、最初は元映像のまま
    mod(n,2)
  • 1フレーム毎に点滅し、最初はモノクロになる
    eq((mod(n,2)),0)
  • 3フレームの間に2フレームモノクロになり、1フレーム元映像のまま
    between((mod(n-1,3)),0,1)

コメントを残す

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

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