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
公式ドキュメント:FFmpeg Filters Documentation : deflicker
オプション
sizeの値を大きくすると輝度ブラーの効果になる。
- size, s[int]
何フレーム前を対象に平均するか
範囲:2 から 129 まで
既定値:5 - mode, m[int] 平均するアルゴリズムの指定
- 0, am:Arithmetic mean、算術平均。既定値
- 1, gm:Geometric mean、幾何平均
- 2, hm:Harmonic mean、調和平均
- 3, qm:Quadratic mean、平方平均
- 4, cm:Cubic mean、立方平均
- 5, pm:Power mean、パワー平均(対数で表した数値の平均を求めるために使用する計算方法)
- median, 6:中央値
- bypass[boolean]
映像にフィルタを当てずにメタデータだけを出力する
既定値:0
扱えるメタデータ。
lavfi.deflicker.luminance lavfi.deflicker.new_luminance // sizeで先読みした結果を表示 lavfi.deflicker.relative_change // new_luminanceにおける相対変化率。-1から1まで