~/ffmpeg.party
[ TOOL · T/07 ]

Frame interpolation generator

Build FFmpeg minterpolate filter strings to smooth video frame rates

The output is a filter string, not a full command. Paste it into the video filter field of an encoding wizard.

01OUTPUT FRAME RATE
target fps · the rate after interpolation
common values: 24, 25, 30, 50, 60, 120

02INTERPOLATION METHOD
how to fill in between frames
mci synthesizes new frames from motion analysis; blend cross-fades between adjacent frames; dup just retags container fps.

03MOTION ESTIMATION
mci only · ignored for blend / dup
enables variable block sizes for finer motion detail · recommended on
default 32 · higher = more accurate, slower
default 10 · lower = more sensitive cut detection

about · option reference

What this is: the minterpolate filter generates new frames between existing ones using motion analysis, producing genuinely smoother motion rather than just blending or duplicating.

Speed warning: motion-compensated interpolation is single-threaded and slow. Long videos can take hours. For long sources, split into chunks, process in parallel, and concat the results.

Display caveat: a 60 fps output only looks smoother on a display capable of 60 Hz playback. On a 30 Hz or 24 Hz screen, the extra frames are wasted.

Recommended workflow: first encode at very low CRF (high quality) for the interpolated intermediate, then re-encode with HEVC or AV1 at your target bitrate to keep file size sane.

Option reference

  • mi_mode — what happens between source frames. mci synthesizes new frames from motion vectors; blend cross-fades adjacent frames; dup just repeats existing frames.
  • mc_mode — how overlapping motion-compensated blocks are merged. aobmc adapts overlap based on local motion confidence; obmc uses fixed overlap.
  • me_mode — which surrounding frames are used. bidir looks at both previous and next frames (more robust); bilat uses bilateral matching (quicker but struggles in busy scenes).
  • vsbmc — variable block sizes per region. Almost always worth on.
  • search_param — how far the motion estimator looks. Default 32 covers typical motion; raise for fast pans.
  • scd_threshold — sensitivity of the built-in shot-cut detector. When a cut is detected, interpolation is skipped across it.

Based on this article by Programster and the FFmpeg minterpolate documentation.

$ minterpolate-filter
copied!

use with: x264 · x265 · av1 · vp9