How to Use the FFmpeg Pullup Filter
This guide explains how to use the pullup filter in
FFmpeg to perform inverse telecine (IVTC) on telecined video files. You
will learn what the pullup filter does, why it is often
preferred over other detelecining methods, and how to write the correct
FFmpeg commands to restore your 29.97 fps telecined video back to its
original, progressive 23.976 fps format.
What is the Pullup Filter?
The pullup filter is a high-quality inverse telecine
filter. Unlike the standard detelecine filter, which
expects a rigid, repeating pattern of fields (like a 3:2 pulldown),
pullup is heuristic-based. It analyzes the video frames
dynamically, looking at past and future fields to decide how to combine
them back into progressive frames. This makes it highly effective for
videos with broken pulldown patterns, mixed content, or edited telecined
footage.
Basic Usage Command
To use the pullup filter, you must apply the filter to
merge the fields and then adjust the output frame rate to drop the
resulting duplicate frames.
Here is the standard command to convert a 29.97 fps telecined video to 23.976 fps progressive video:
ffmpeg -i input.mp4 -vf "pullup,fps=24000/1001" -c:a copy output.mp4In this command: * -vf "pullup,fps=24000/1001": Applies
the pullup filter first to combine the fields. It then
pipes the video into the fps filter set to
24000/1001 (which is approximately 23.976 fps) to drop the
duplicate frames created by the pullup process. *
-c:a copy: Copies the audio stream without re-encoding to
preserve quality and save processing time.
Handling Overscan and Noise (Junk Parameters)
Telecined video—especially when digitized from analog sources like
VHS or Betacam—often contains static, head-clog, or black bars at the
edges of the frame. This “junk” can confuse the pullup
filter’s analysis engine.
To prevent this, you can tell the filter to ignore a specific number
of pixels on the left, right, top, or bottom of the frame using the junk
parameters: jl (junk left), jr (junk right),
jt (junk top), and jb (junk bottom).
For example, to ignore 8 pixels on all sides during the analysis, use this command:
ffmpeg -i input.mp4 -vf "pullup=jl=8:jr=8:jt=8:jb=8,fps=24000/1001" -c:a copy output.mp4Note: These parameters only ignore the specified pixels during the filter’s internal calculation phase; they do not actually crop the output video.
When to Use Pullup
Use the pullup filter when: * You are dealing with NTSC
DVDs or digitized VHS tapes. * The video has undergone “dirty” edits
where the 3:2 pulldown pattern breaks at scene cuts. * The standard
detelecine filter results in stuttering, interlacing
artifacts, or ghosting.