Convert Progressive to Interlaced with FFmpeg tinterlace
This article explains how to convert high-frame-rate progressive
video into standard interlaced video using the FFmpeg
tinterlace filter. By applying temporal decimation, you can
take a 50p or 60p progressive source and generate a broadcast-compliant
25i or 30i interlaced output where alternate progressive frames are
merged into alternating fields to preserve fluid motion.
Understanding
Temporal Decimation with tinterlace
Interlacing via temporal decimation halves the frame rate by taking consecutive full frames and interleaving them into a single frame. Instead of dropping frames, odd lines from one frame and even lines from the next are combined.
- Input: Progressive video at double the target interlaced frame rate (e.g., 50 fps or 59.94 fps).
- Output: Interlaced video at standard frame rate (e.g., 25 fps or 29.97 fps) containing 50 or 59.94 fields per second.
Selecting the Field Order
The tinterlace filter uses the mode
parameter to define how lines are combined:
- Top Field First (TFF):
mode=interleave_top(ormode=0). Takes the top field (even lines) from the first frame and the bottom field (odd lines) from the subsequent frame. - Bottom Field First (BFF):
mode=interleave_bottom(ormode=1). Takes the bottom field from the first frame and the top field from the subsequent frame.
Basic Command Syntax
To convert a 60p progressive file to 30i (Top Field First), use the following basic filter configuration:
ffmpeg -i input_60p.mp4 -vf "tinterlace=mode=interleave_top,setfield=tff" -c:v libx264 -flags +ildct+ilme output_30i.mp4Complete Practical Examples
Example 1: Top Field First H.264 Encoding
Broadcast standards such as 1080i50 or 1080i59.94 typically require Top Field First (TFF).
ffmpeg -i input_50p.mp4 -vf "tinterlace=mode=interleave_top,setfield=tff" -c:v libx264 -flags +ildct+ilme -top 1 -c:a copy output_25i.mp4tinterlace=mode=interleave_top: Interleaves consecutive frames into fields and halves the output frame rate.setfield=tff: Tags the internal video frames as Top Field First.-flags +ildct+ilme: Enables interlaced Discrete Cosine Transform (DCT) and interlaced Motion Estimation (ME) in the video encoder.-top 1: Sets the container/codec-level field order flag to Top Field First (-top 0sets Bottom Field First).
Example 2: Interlacing to Apple ProRes for Broadcast Delivery
For editing and mezzanine archive workflows, interlaced ProRes is frequently required:
ffmpeg -i input_5994p.mov -vf "tinterlace=mode=interleave_top,setfield=tff" -c:v prores_ks -profile:v 3 -flags +ildct+ilme -c:a copy output_2997i.movExample 3: Bottom Field First (DV Standards)
If producing content for legacy formats such as standard-definition DV, specify Bottom Field First:
ffmpeg -i input_5994p.mp4 -vf "tinterlace=mode=interleave_bottom,setfield=bff" -c:v libx264 -flags +ildct+ilme -top 0 -c:a copy output_bff.mp4Verification
To verify that the resulting file contains interlaced frames and
accurate metadata, run ffprobe:
ffprobe -v error -select_streams v:0 -show_entries stream=field_order,r_frame_rate output_30i.mp4The output should report the halved frame rate (e.g.,
30/1 or 25/1) and the specified field order
(tt for Top Field First, bb for Bottom Field
First).