ffmpeg 3.4 から追加のフィルタ。蛍光灯や昔の映像で数フレーム毎に明るくなったり暗くなったりするのを前後フレームから平均してちらつきを抑えるdeflickerフィルタの使い方。

基本コマンド

5フレーム前から輝度の平均が始まる
ffmpeg -i input -vf deflicker=s=5:m=0:bypass=0 output
ffplay -i input -vf deflicker=5:0:0

小数点以下3桁までで丸めるのでs=2:m=6を併用してsignalstatsフィルタの6桁よりログサイズを小さくするのにも使える。
ffprobe -v error -f lavfi -i movie=iput.mp4,deflicker=2:6:1,signalstats -select_streams v:0 -show_entries packet=pts_time -show_entries packet_tags=lavfi.deflicker.luminance,lavfi.signalstats.YAVG -of csv=print_section=0 > deflicker.luminance.csv

YUV のデータを数値で表示する signalstats

公式ドキュメント:FFmpeg Filters Documentation : deflicker

オプション

sizeの値を大きくすると輝度ブラーの効果になる。

  • size, s[int]
    何フレーム前を対象に平均するか
    範囲:2 から 129 まで
    既定値:5
  • mode, m[int] 平均するアルゴリズムの指定
  • bypass[boolean]
    映像にフィルタを当てずにメタデータだけを出力する
    既定値:0

扱えるメタデータ。

lavfi.deflicker.luminance
lavfi.deflicker.new_luminance // sizeで先読みした結果を表示
lavfi.deflicker.relative_change // new_luminanceにおける相対変化率。-1から1まで

コメントを残す

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

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