How to Use the FFmpeg Telecine Filter
This article provides a practical guide on how to use the
telecine filter in FFmpeg to convert progressive video into
an interlaced format. You will learn the fundamental concept of the
telecine process, the syntax of the FFmpeg filter, and how to apply
common pulldown patterns—such as the standard 3:2 pulldown—using clear
command-line examples.
Understanding the Telecine Filter
The telecine filter in FFmpeg is used to convert
progressive video, typically shot at 24 frames per second (fps), into an
interlaced video format suitable for television broadcasting (such as
NTSC at 29.97 fps or 30 fps). It achieves this by splitting the
progressive frames into individual fields (odd and even lines) and
repeating certain fields in a specific pattern, a process known as
“pulldown.”
Basic Filter Syntax
The basic syntax for the telecine filter is:
-vf "telecine=option1=value1:option2=value2"The filter accepts two primary options:
first_field: Specifies which field is output first. Acceptable values aretop(ort) for top field first, andbottom(orb) for bottom field first. The default istop.pattern: Defines the pulldown pattern. This is a string of digits representing the number of fields generated from each consecutive input frame. The default pattern is23(standard 3:2 pulldown).
Common Pulldown Patterns
23(Standard NTSC 3:2 Pulldown): Converts 24 fps progressive video to 30 fps interlaced video. The first frame produces 2 fields, the second produces 3 fields, the third produces 2 fields, and so on.22(2:2 Pulldown): Used primarily for PAL formats (25 fps progressive to 25 fps interlaced). Each progressive frame is simply split into 2 fields.2332: A variation of the 3:2 pulldown used in some DV camera formats to make editing easier.
Step-by-Step Command Examples
Example 1: Standard 3:2 Pulldown (NTSC)
To convert a 24 fps progressive video to a 30 fps interlaced video using the standard 3:2 pulldown with Top Field First (TFF), use the following command:
ffmpeg -i input.mp4 -vf "telecine=first_field=top:pattern=23" output.mp4Example 2: Interlaced Encoding Flags
When using the telecine filter, it is important to
instruct the video encoder to flag the output file as interlaced.
Otherwise, media players may try to play it back as progressive video,
resulting in visual artifacts.
For the H.264 (libx264) encoder, you should add the
-flags +ildct+ilme options:
ffmpeg -i input.mp4 -vf "telecine=first_field=top:pattern=23" -c:v libx264 -flags +ildct+ilme output.mp4-flags +ildct: Enables interlaced discrete cosine transform (DCT) support in the encoder.-flags +ilme: Enables interlaced motion estimation in the encoder.
Example 3: Standard 2:2 Pulldown (PAL)
To convert a progressive video to interlaced video using a 2:2 pulldown (typically for 25 fps PAL video), run:
ffmpeg -i input.mp4 -vf "telecine=first_field=top:pattern=22" -c:v libx264 -flags +ildct+ilme output.mp4