Can any FFMPEG experts tell me if FFMPEG can do any sophisticated frame interpolation similar to the Twixtor plugin in After Effects? If so, what would be some suggested settings to try? I'm trying to create ultra slow motion HD footage from a 60fps source. ie Convert to 120fps and interpolate the frames.
FFmpeg cannot do this.
There were some discussions about implementing such a feature a couple of years ago, but so far they haven't released anything similar to frame interpolation in the project.
The libavfilter library has a filter called minterpolate, which is available since November 2016. According to the fitler's description, its purpose is to:
"Convert the video to specified frame rate using motion interpolation."
ffmpeg -i input.60fps.hevc -filter "minterpolate='fps=120'" output.120fps.hevc
I do not know which settings to use in order to achieve the best possible result. From my experience, the default settings provide acceptable quality of the motion interpolation itself. But there are some very noticeable visual artifacts introduced occasionally. I was not able to find a combination of settings which would completely eliminate them.
The filter is very slow at the moment. It can output around 2 motion-interpolated frames of 1080p video per second on a modern, high-end x86 CPU. I have noticed that the interpolation utilizes only a single CPU thread, which is probably the main reason for such a slow speed.
In order to speed up the filter on a multi-core CPU, it may be advisable to split the input video into several chunks of equal length and apply the motion interpolation to all of them in parallel.
Months after update:
ffmpeg -i input.mp4 -movflags +faststart -filter_complex "[0:v]minterpolate='fps=60:mi_mode=mci:me_mode=bidir:mc_mode=obmc:me=ds:vsbmc=1'" -preset ultrafast output.mp4
I am able to achieve such effects (not perfect though), with tblend filter
ffmpeg -i source.mp4 -filter:v tblend -r 120 result.mp4