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 implementationsdrawgraph 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'https://chrome.google.com/webstore/detail/seizafe-epilepsy-a...
There are other offline tests like the Harding test that are run by the content creators (and why you see the epilepsy warnings at the start of shows)
FWIW, I'm not sure if this actually would benefit cats. I'm not up to speed on feline perception, but I know dogs see at a different frame rate than humans so things that won't trigger us might trigger them differently