How to Use FFmpeg Telecine Filter for 3:2 Pulldown
This guide explains how to use the telecine filter in
FFmpeg to apply a 3:2 pulldown, a process used to convert 24 frames per
second (fps) video into a 29.97 fps NTSC-compatible format. You will
learn the basic command syntax, how the filter options work, and how to
execute this conversion to create standard interlaced video from
progressive sources.
Understanding the Telecine Filter
The telecine process converts progressive 24 fps (or 23.976 fps)
footage into 30 fps (or 29.97 fps) interlaced video by splitting frames
into fields and repeating them in a specific pattern. The FFmpeg
telecine filter automates this process by generating the
necessary interlaced fields.
Basic Command Syntax
To apply a standard 3:2 pulldown using the telecine
filter, use the following command template:
ffmpeg -i input_24fps.mp4 -vf "telecine=first_field=t:pattern=23" -c:v libx264 -flags +ildct+ilme output_30fps.mp4Parameter Breakdown
-vf "telecine=...": This invokes the video filtergraph and applies the telecine filter.first_field(orff): Specifies which field is output first.tortop: Top field first (TFF) (Default and most common for HD video).borbottom: Bottom field first (BFF).
pattern(orp): Defines the pulldown pattern.23: This is the standard NTSC 3:2 pulldown pattern (FFmpeg refers to it as23based on the frame-to-field mapping ratio). It stretches 4 progressive frames into 5 interlaced frames (10 fields).
-flags +ildct+ilme: These flags instruct the encoder (likelibx264) to use interlaced discrete cosine transform (DCT) and interlaced motion estimation. This ensures the interlaced structure created by the telecine filter is preserved correctly during compression.
Verifying the Output
Once the command finishes running, you can verify that the frame rate
has increased from 23.976 fps to 29.97 fps (or 24 fps to 30 fps) by
analyzing the output file with ffprobe:
ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate -of default=noprint_wrappers=1 output_30fps.mp4