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:
- Match Fields (
fieldmatch): Pairs complementary fields together to rebuild whole progressive frames. - 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.mp4fieldmatch: 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.mp4combmatch=full: Enables combing detection on matched frames.yadif=deint=interlaced: Applies spatial deinterlacing exclusively to frames flagged as combed byfieldmatch, 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.mp4first_field: Specifies top-field-first (topor0) or bottom-field-first (bottomor1).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.