Interpolation with FFmpeg

43,396

Solution 1

Yes, there is a way. Since November 2016, the libavfilter library has a video filter called minterpolate, which performs motion interpolation.

Example usage:

ffmpeg -i input.lowfps.hevc -filter "minterpolate='fps=120'" output.120fps.hevc

Solution 2

Have a look at this AI project with impressive results: http://jianghz.me/projects/superslomo/

It has a Python implementation which can accelerate using CUDA. https://github.com/avinashpaliwal/Super-SloMo

There's also an easy tutorial for that Python impl, with honest examples. https://www.youtube.com/watch?v=mXwXtIiOjRA

Solution 3

You can use Butterflow as it uses ffmpeg https://github.com/dthpham/butterflow

It's a command-line tool that can:

Increase a video's frame rate by rendering new frames based on motion (pixel-warping + blending). Make smooth motion videos (simple blending between frames). Leverage new frames/increase in frame rates to make fluid slow motion videos.

Share:
43,396

Related videos on Youtube

Levan
Author by

Levan

Updated on September 18, 2022

Comments

  • Levan
    Levan almost 2 years

    Is there a way to interpolate frames with ffmpeg? and not just copy them. I tried slowmovideo and boy it is slow. I used Twixtor in vegas and hated it. I gave megui and could not get it properly set up.

    So is there a way to interpolate with ffmpeg??

    • Elisa Cha Cha
      Elisa Cha Cha over 8 years
      The framerate filter does some simple interpolation, but probably not what you're looking for.
    • Levan
      Levan over 8 years
      Yes a bit more advanced feature would be nice
    • Gyan
      Gyan almost 8 years
      FFmpeg recently got its own minterpolate filter.
  • DavidPostill
    DavidPostill almost 8 years
    Please read How do I recommend software for some tips as to how you should go about recommending software. You should provide at least a link, some additional information about the software itself, and how it can be used to solve the problem in the question.
  • Peter Bašista
    Peter Bašista over 7 years
    Just like any other ffmpeg video filter, e.g. ffmpeg -i input.hevc -filter "minterpolate='mi_mode=mci:mc_mode=aobmc:vsbmc=1'" output.hevc. The filter's documentation contains the description of the available parameters and their values.
  • colton7909
    colton7909 over 5 years
    This command didn't work for me until I specified -filter:v instead of just -filter
  • Peter Bašista
    Peter Bašista over 5 years
    Yes, that is true. If there are some non-video streams in the input file, the minterpolate filter needs to be restricted to a single video stream by using the :v stream specifier. If the input file contains multiple video streams, it is necessary to restrict the filter to a single video stream by using a stream specifier similar to :v:0.