FFmpeg Framerate Scene Change Threshold Guide
This article explains how to configure the scene change detection
threshold in the FFmpeg framerate filter. You will learn
about the key parameters—specifically scd and
scd_threshold—how they control video frame interpolation,
and how to apply them in your command-line workflows with practical
examples.
When changing a video’s frame rate using the FFmpeg
framerate filter, the tool interpolates (blends) adjacent
frames to create a smooth transition. However, interpolating across a
scene cut results in ugly, blurry “ghosting” artifacts. To prevent this,
the framerate filter uses Scene Change Detection (SCD).
When a scene change is detected, the filter performs a hard cut instead
of blending.
You can configure and fine-tune this behavior using two main parameters:
scene_change_detect(aliasscd): Enables or disables scene change detection.scd=noneorscd=0: Disables scene change detection.scd=scdorscd=1: Enables scene change detection (Default).
scd_threshold(aliasscdt): Sets the sensitivity of the scene change detection as a percentage of maximum change.- Default value:
10.0 - Range:
0.0to100.0
- Default value:
How to Configure the Threshold
To adjust the threshold, pass the scdt parameter inside
the -vf "framerate=..." filter string.
1. Increase Sensitivity (Lower Threshold)
If FFmpeg is failing to detect scene cuts and is blending frames
during transitions, lower the scdt value. A lower
percentage means a smaller difference between frames is needed to
trigger a scene cut.
ffmpeg -i input.mp4 -vf "framerate=fps=60:scd=scd:scdt=5.0" output.mp42. Decrease Sensitivity (Higher Threshold)
If FFmpeg is mistakenly identifying fast motion or camera pans as
scene changes (which stops smooth interpolation where you want it),
increase the scdt value.
ffmpeg -i input.mp4 -vf "framerate=fps=60:scd=scd:scdt=15.0" output.mp43. Disable Scene Change Detection Entirely
If you want the filter to interpolate every single frame regardless of visual cuts, disable the detection mechanism.
ffmpeg -i input.mp4 -vf "framerate=fps=60:scd=none" output.mp4