Apply 3:2 Pulldown with Custom Field Order in FFmpeg

This article provides a straightforward guide on how to apply a 3:2 pulldown (telecine) to a 24fps progressive video to convert it to a 29.97fps interlaced format using FFmpeg. You will learn how to use FFmpeg’s built-in filters to customize the output field order as either Top Field First (TFF) or Bottom Field First (BFF) to meet specific broadcast or archiving requirements.

The Telecine Filter in FFmpeg

To apply a 3:2 pulldown, FFmpeg utilizes the telecine video filter. This filter takes progressive frames and distributes them into interlaced fields. By default, the filter uses a standard 3:2 pattern (p0123) and defaults to Top Field First (TFF).

To customize the field order, you must specify the first_field parameter within the filter.

Option 1: Top Field First (TFF) 3:2 Pulldown

If your target destination requires Top Field First interlacing, use the telecine filter and set first_field to top (or t).

Run the following command:

ffmpeg -i input.mp4 -vf "telecine=first_field=top" -c:v mpeg2video -flags +ilme+ildct output.mp4

Option 2: Bottom Field First (BFF) 3:2 Pulldown

If your workflow requires Bottom Field First interlacing, change the first_field parameter to bottom (or b).

Run the following command:

ffmpeg -i input.mp4 -vf "telecine=first_field=bottom" -c:v mpeg2video -flags +ilme+ildct output.mp4

Ensuring Correct Metadata with the Fieldorder Filter

Sometimes, hardware players or video editing suites misinterpret the field order of the output file. To guarantee that the container metadata explicitly matches your custom field order, chain the fieldorder filter immediately after the telecine filter.

For TFF:

ffmpeg -i input.mp4 -vf "telecine=first_field=top,fieldorder=tff" -c:v mpeg2video -flags +ilme+ildct output.mp4

For BFF:

ffmpeg -i input.mp4 -vf "telecine=first_field=bottom,fieldorder=bff" -c:v mpeg2video -flags +ilme+ildct output.mp4

Using these command structures ensures your video is correctly converted from progressive 24fps (or 23.976fps) to compliant 29.97fps interlaced video with your exact field order preferences.