Configure Pullup Pattern in FFmpeg Telecine Filter
This guide explains how to configure the pullup cadence and field
order using FFmpeg’s telecine video filter. You will learn
the mechanics behind the pattern parameter, how it maps
progressive input frames to interlaced output fields, and how to
construct specific telecine cadences—such as classic 3:2, 2:3:3:2, and
European telecine—for standard-definition and high-definition broadcast
workflows.
Telecine Filter Syntax
The basic syntax for the telecine filter in FFmpeg
is:
-vf "telecine=first_field=FIELD:pattern=PATTERN"The filter accepts two primary parameters:
first_field: Dictates which field is output first. Acceptstop(ort) for top-field-first (TFF), andbottom(orb) for bottom-field-first (BFF). The default istop.pattern: A sequence of digits defining how many fields each sequential progressive input frame contributes to the interlaced output stream. The default is23.
Understanding the
pattern Parameter
The pattern string defines the cadence of the telecine
conversion. Each digit in the string corresponds to an input frame in
sequential order and represents the number of fields generated from that
frame.
Because an interlaced video frame consists of 2 fields, the sum of all digits in a complete pattern cycle divided by 2 gives the number of interlaced frames generated.
For example, to convert 24 fps to 29.97 fps (or 30 fps), every 4 progressive input frames must be expanded into 10 fields (5 interlaced frames):
- Frame 1 contributes 2 fields.
- Frame 2 contributes 3 fields.
- Frame 3 contributes 2 fields.
- Frame 4 contributes 3 fields.
This sequence produces the standard 23 pattern
(representing alternating 2-field and 3-field frames).
Common Pulldown Patterns and Configurations
1. Standard 3:2 Pulldown (NTSC 24p to 60i)
The most common conversion for film-to-video transfers. Frame A outputs 2 fields, Frame B outputs 3 fields (the third field is repeated from the first field of that frame), and the cycle repeats.
- Filter String:
pattern=23(orpattern=32) - Command Example:
ffmpeg -i input_24p.mp4 -vf "telecine=first_field=top:pattern=23" -r 30000/1001 -c:v libx264 -flags +ilme+ildct output_60i.mp42. Advanced 2:3:3:2 Pulldown
Commonly used in digital acquisition formats like Panasonic DVX100 (24p Advanced). In this pattern, only the middle frame shares fields across frames, making inverse telecine (reconstruction back to 24p) cleaner since only one interlaced frame contains mixed temporal data.
- Filter String:
pattern=2332 - Command Example:
ffmpeg -i input_24p.mp4 -vf "telecine=first_field=top:pattern=2332" -r 30000/1001 -c:v libx264 -flags +ilme+ildct output_advanced.mp43. Euro-Telecine (24p to 50i / 25 fps Interlaced)
When converting 24 fps progressive film to 50i European PAL broadcast without pitch-shifting or speeding up the audio to 25 fps, 2 fields must be inserted every second (48 fields become 50 fields). This requires a 24-frame repeating cycle where 22 frames generate 2 fields each and 2 frames generate 3 fields each.
- Filter String:
pattern=222222222223222222222223 - Command Example:
ffmpeg -i input_24p.mp4 -vf "telecine=first_field=top:pattern=222222222223222222222223" -r 25 -c:v libx264 -flags +ilme+ildct output_50i.mp44. Progressive Interlaced (2:2 Pulldown)
If the input is 25p or 30p and needs to be marked and formatted as 50i or 60i without altering frame pacing, each progressive frame simply splits into 2 fields.
- Filter String:
pattern=2 - Command Example:
ffmpeg -i input_25p.mp4 -vf "telecine=first_field=top:pattern=2" -r 25 -c:v libx264 -flags +ilme+ildct output_50i.mp4Encoding Flags for Interlaced Compatibility
When using the telecine filter with H.264
(libx264), pass standard interlacing flags to ensure
container and codec-level headers match the field structure generated by
the filter:
-flags +ilme+ildct: Enables interlaced motion estimation and discrete cosine transform.-top 1: Sets the top-field-first flag in the bitstream (use-top 0for bottom-field-first).-r [rate]: Explicitly sets the container output frame rate (e.g.,30000/1001for NTSC 29.97 fps,25for PAL).