3 ms·
VLC: Tools > Effects and Filters > Video Effects > Advanced > Anti-Flickering Tools > Preferences > Show settings: All > Search: antiflicker mpv --vf=defli
by mgdlbp 4y ago
VLC:
Tools > Effects and Filters > Video Effects > Advanced > Anti-Flickering
Tools > Preferences > Show settings: All > Search: antiflicker
mpv --vf=deflicker,scale=960x540,pixscope 'https://github.com/apple/VideoFlashingReduction/blob/main/VideoFlashingReduction_Mathematica/Resources/movie.mp4?raw=true'
(generate test video):
ffplay -f lavfi -i "color=777777[x],color=cccccc,
[x]framepack=frameseq,settb=AVTB,
setpts=N/TB/${flickerrate:-12},framerate=${interpolated:-24},
deflicker=size=5:mode=am,scale=640x480,pixscope"
antiflicker and deflicker are different implementations
- mgdlbp 4y agoDoh! there's a better filter for this: photosensitivity. It detects local brightness changes that sum to 0, unlike deflicker and apparently the Apple algorithm. drawgraph can be bodged to convert metadata to frames, and signalstats the opposite. This enables silly things like a self-contained filtergraph mimicking Apple's demo with plots and usable in mpv. frames=5 sensitivity=1.5 dim_range=2 dim_intercept=-0.4 smoothing=10 smoothtype=am decay=0.9 min_contrast=0.0 min_brightness=0.0 min_saturation=0.0 ffplay -vf "split[original], crop=640:360:0:0, split=5[i1][i2][i3][i4][i5]; [i1]photosensitivity=$frames :$sensitivity, drawgraph='bg=black@0 :r=60 :s=1x1 :m1=lavfi.photosensitivity.factor :fg1=0x010101*round(0xff*clip(VAL*$dim_range+$dim_intercept,0,1))', split[sensedat], deflicker=$smoothing :$smoothtype, negate, lagfun=$decay, negate, split[mit1][mit2]; [mit1][i2]scale2ref[mask][i2]; [i2][mask]alphamerge[m]; [mit2]signalstats[mitdat]; [i3]eq=$min_contrast :$min_brightness :${min_saturation}[a]; [a][m]overlay, split[output1][output2]; [sensedat]drawgraph=lavfi.photosensitivity.badness :0xffff0000 :bg=white :r=60 :slide=scroll :size=512x256 :min=0 :max=7[bad]; [bad][i5]scale2ref[badout][reuse]; [badout]drawtext=fontcolor=2222dd:text='frame %{metadata\:lavfi.photosensitivity.frame-badness}'[badout]; [badout]drawtext=fontcolor=0000ff:y=1.2*lh:text='badness %{metadata\:lavfi.photosensitivity.badness}'[badout]; [badout]drawtext=fontcolor=777700:y=2.4*lh:text='factor %{metadata\:lavfi.photosensitivity.factor}'[badout]; [mitdat]drawgraph=lavfi.signalstats.YAVG :0xff00ccdd :bg=00000000 :r=60 :slide=scroll :size=512x256 :min=0 :max=255, vflip[factor]; [factor][badout]scale2ref[factorout][badout]; [factorout]drawtext=fontcolor=999900:y=3.6*lh:text='smoothed %{metadata\:lavfi.signalstats.YAVG}'[factorout]; [badout][factorout]overlay[rplot]; [i4]signalstats, drawgraph=lavfi.signalstats.YAVG :0xffff0000 :bg=white :r=60 :slide=scroll :size=512x256 :min=0 :max=255[lum]; [lum][reuse]scale2ref[lumout][reuse]; [lumout]drawtext=fontcolor=ff0000:text='%{pts\:hms} %{pts} %{eif\:n\:d\:5}'[lumout]; [lumout]drawtext=fontcolor=0000ff:y=1.2*lh:text='avg luma %{metadata\:lavfi.signalstats.YAVG}'[lumout]; [output1]signalstats, drawgraph=lavfi.signalstats.YAVG :0xff00ccdd :bg=00000000 :r=60 :slide=scroll :size=512x256 :min=0 :max=255[mlum]; [mlum][lumout]scale2ref[mlumout][lumout]; [mlumout]drawtext=fontcolor=999900:y=2.4*lh:text='mitigated %{metadata\:lavfi.signalstats.YAVG}'[mlumout]; [lumout][mlumout]overlay[lplot]; [reuse][output2][rplot][lplot]xstack=4 :0_0|w0+30_0|w0+30_h0+20|0_h0+20, [original]hstack" \ 'https://web.archive.org/web/0id_/https://developer.apple.com/accessibility/downloads/video-flashing-reduction-fig12.mp4'