Technical note

RIFE vs ffmpeg minterpolate: smoothing AI video without smearing it

Earlier this year we shipped a scroll-scrubbed video background on a demo site. Your scroll position drives the playhead, so the page moves when you move. For that to feel smooth you need a lot of frames, and the AI video generators (Higgsfield, Veo, Kling alike) all output 24 frames per second. Scrubbed slowly, 24fps stutters, so we needed to double it.

The obvious tool smears AI footage

ffmpeg ships a frame interpolation filter called minterpolate, and it was our first stop. It works on block-based motion estimation: cut each frame into blocks, guess where each block moved, blend the in-between. On real camera footage it can pass. On AI-generated footage the guesses miss more often, and the output goes soft, with ghosting where the blocks meet.

That block ghosting is the tell. The filter moves tiles, and on crisp footage you can see the grout lines. The sharp edges the generator rendered are most of what makes AI video look good, and minterpolate blurs exactly those.

RIFE tracks pixels, not blocks

RIFE takes a different approach. A neural net trained on real motion predicts pixel-level optical flow, meaning where every pixel travels between two frames, and synthesizes the in-between frame from that. Edges stay crisp. There are no block boundaries to ghost.

We run RIFE locally as rife-ncnn-vulkan, a standalone binary with no Python stack to install. It runs on the GPU on Apple silicon, so the cost stays bearable: roughly 5 to 10 times ffmpeg's runtime. An 8-second 1280x720 clip at 24fps takes about 3 minutes end to end, frames out to frames back.

Two pipeline notes. RIFE does better on lossless input, so extract the source to PNG first, interpolate, then encode your delivery format. Those intermediate PNG folders get big fast, so delete them once the encode finishes.

On the scroll-scrub job we fed RIFE 193 source frames and got 386 back. Visibly sharper than the minterpolate pass we ran first, on the same source at the same target rate. That comparison settled the question for us.

When each wins

minterpolate wins on convenience. One ffmpeg call, nothing to install, and much faster. For a quick internal preview, or footage that plays small on screen, use it and move on.

RIFE wins whenever the footage lands big and the edges matter, which describes nearly every piece of AI video we deliver. 2x is the safe default. For 4x, run two passes or set explicit time steps in a single pass, and watch the result before you ship it.

The trap: interpolation has a ceiling. Push too many synthetic frames into fast or complex motion and artifacts show up even with RIFE. The model predicts motion, and motion it has never seen defeats it. Test on your actual footage before you commit a pipeline to it.

Frame interpolation is one of those jobs where the second-fastest tool is the right one. 3 minutes per clip is cheap. Smeared edges on a hero video are not. Run both once on your own footage, look at the edges, and you will not need convincing.