How to Use FFmpeg Pullup Filter for Inverse Telecine
This guide explains how to use the pullup filter in
FFmpeg to perform field-matching and inverse telecine (IVTC) on
telecined video content. You will learn the mechanics behind the
pullup filter, its essential configuration parameters, and
how to construct commands that restore 29.97 fps telecined material back
to its original 23.976 fps progressive format.
Understanding the Pullup Filter
The pullup filter is a field-matching filter designed
for inverse telecine. Unlike simple deinterlacers that discard fields or
interpolate scanlines, pullup analyzes adjacent interlaced
fields and combines matching pairs to reconstruct the original
progressive frames.
Because pullup only matches fields and does not drop the
resulting duplicate frames, it must be paired with a frame-rate
reduction filter—typically fps or decimate—to
achieve a true inverse telecine output.
Basic Pullup Syntax
A standard 3:2 pulldown converts 24p (23.976 fps) film to 60i (29.97
fps) NTSC broadcast video. To reverse this, apply pullup
followed by fps=24000/1001:
ffmpeg -i input_telecined.mkv -vf "pullup,fps=24000/1001" -c:v libx264 -crf 18 -c:a copy output_progressive.mp4pullup: Analyzes incoming fields and recombines matching fields into progressive frames.fps=24000/1001: Sets the output framerate to 23.976 fps, cleanly dropping the duplicate frames generated by field matching.
Configuring Pullup Parameters
Analog sources (such as VHS or telecined LaserDisc captures) often
contain head-switching noise, edge artifacts, or border discoloration
that interfere with field-matching metrics. The pullup
filter includes parameters to ignore these problematic areas:
jl,jr,jt,jb(Junk Left, Right, Top, Bottom): Number of pixels to ignore at each edge when calculating field differences. Defaults to0. Must be multiples of 2.strict: Sets the strictness of the matching engine.-1: Allows matching across scene breaks (useful for poorly edited telecine).0: Default balanced mode.1: Strict matching; prevents matching across different scenes, reducing risk of blending frames at cut points.
mp(Metric Plane): Specifies which color plane to use for calculations. Defaults to0(Luma/Y plane), which is the most reliable for telecine detection.
Example with Edge Masking
If an analog NTSC capture has noise on the bottom 8 pixels and along the sides:
ffmpeg -i analog_tape.ts -vf "pullup=jl=8:jr=8:jt=0:jb=8,fps=24000/1001" -c:v libx265 -crf 20 -c:a flac output.mkvAlternative: Using Pullup with Decimate
In workflows where variable framerate (VFR) or complex cadences are
present, combining pullup with the decimate
filter can be used instead of forcing a fixed framerate with
fps:
ffmpeg -i input.vob -vf "pullup,decimate" -c:v libx264 -crf 17 -c:a copy output.mp4The decimate filter drops 1 duplicate frame out of every
5 frames, natively achieving the 4/5 reduction required for standard 3:2
pulldown removal.