[FFmpeg-user] telecine pattern 5555 - Judder-free, 60 FPS telecine (?)
Mark Filipak
markfilipak.windows+ffmpeg at gmail.com
Sun Apr 5 16:34:23 EEST 2020
Okay, so where are we? Oh, yeah.
For a 23.970 FPS source and the TV set to 23.970 vscan, my TV telecines and shows telecine judder.
Therefore, it cannot actually be running at 23.970Hz vscan. Since a 4-6-4-6 pull-down (to 60Hz) is
judder free & the TV shows judder, that's not what the TV is doing. Instead, it must be doing the
standard 2-3-2-3 pull-down (to 30 FPS) followed by frame doubling (to 60 FPS). So, my TV does not
have a native 24Hz mode. That comes as no surprise to me. In fact, I believe that no TV has a native
24Hz vscan mode. I believe that all that claim it are actually doing so-called "True Motion",
on-the-fly motion vector compensation -- synthesizing intermediate motion vectors for the otherwise
combed frames that are found in all telecines.
ffmpeg -i 24FPS_IN -vf "telecine=pattern=5" 60FPS_OUT
is judder free, but it's combed. The combing is much less than the combing present in 2-3-2-3
pull-down, but it's still objectionable to some people.
ffmpeg -i 24FPS_IN -vf "telecine=pattern=5,bwdif=mode=send_frame" 60FPS_OUT
does some decombing (I think), but 'bwdif=mode=send_frame' may not be the best choice as it appears
to be 'deinterlacing' the progressive frames as well, and producing some slight alterations in them.
What I'd like to try is 5-5-5-5 pull-down (to 60 Fps) and then replicating "True Motion" within
ffmpeg for the 2 frames out of 10 frames that are combed, but I need some help crafting the command
line. I think the most fruitful approach is via a filter_complex: Split the input, block frames 3,
8, 13, 18, etc. in the main line, pass frames 3, 8, 13, 18, etc. in the branch, motion compensate
the branch frames ala "True Motion", and finally merge the branch back into the main. Seems
straightforward to me.
More information about the ffmpeg-user
mailing list