Remove 3:2 Pulldown in FFmpeg with Fieldmatch

Converting telecined video back to its original progressive film framerate requires an Inverse Telecine (IVTC) process to eliminate the 3:2 pulldown pattern. This guide explains how to properly reverse a 3:2 pulldown from a 29.97 fps NTSC stream back to clean 23.976 fps progressive video using FFmpeg's fieldmatch and decimate filters, as well as the alternative detelecine filter for fixed pulldown cadences.

The Standard Inverse Telecine (IVTC) Workflow

A 3:2 pulldown creates 29.97 interlaced frames per second from 23.976 progressive frames by duplicating individual fields across adjacent frames. To reverse this cleanly, you must perform two operations:

  1. Match Fields (fieldmatch): Pairs complementary fields together to rebuild whole progressive frames.
  2. Remove Duplicates (decimate): Discards the extra duplicate frame created during the telecine process, dropping the framerate from 29.97 fps back to the native 23.976 fps.

Basic FFmpeg Command

Run the following command in your terminal to apply the standard IVTC chain:

ffmpeg -i input_telecined.mp4 -vf "fieldmatch,decimate" -c:v libx264 -crf 18 -c:a copy output_progressive.mp4
  • fieldmatch: Reconstructs progressive frames by matching fields from adjacent frames.
  • decimate: Drops 1 in every 5 frames to restore the 23.976 fps cadence (29.97 * 4 / 5).
  • -c:a copy: Retains original audio without re-encoding.

Handling Combing Artifacts with Deinterlacing Fallback

If the source has broken pulldown cadence or hybrid sections, some frames may still display combing artifacts. You can instruct fieldmatch to pass comb-detected frames to a secondary deinterlacer such as yadif:

ffmpeg -i input_telecined.mp4 -vf "fieldmatch=combmatch=full,yadif=deint=interlaced,decimate" -c:v libx264 -crf 18 -c:a copy output_clean.mp4
  • combmatch=full: Enables combing detection on matched frames.
  • yadif=deint=interlaced: Applies spatial deinterlacing exclusively to frames flagged as combed by fieldmatch, leaving purely reconstructed progressive frames untouched.

Alternative: Fixed Cadence with detelecine

If your content has an unbroken, strict telecine cadence with a known starting field, you can use the detelecine filter directly without dynamic field matching:

ffmpeg -i input_telecined.mp4 -vf "detelecine=first_field=top:pattern=23" -c:v libx264 -crf 18 -c:a copy output_detelecine.mp4
  • first_field: Specifies top-field-first (top or 0) or bottom-field-first (bottom or 1).
  • pattern=23: The standard 3:2 pulldown sequence.

For variable cadences or typical broadcast rips, the dynamic fieldmatch,decimate approach is generally more reliable than static detelecine.