Video Frame Interpolate π₯
Smoothing out a choppy AI clip without an ML model
- images
- images
- summary
Generated video comes out choppy. Whether it's a latent-interpolated morph sequence or a model's low native frame rate, the motion between frames is often a jump instead of a glide. The Video Frame Interpolate node from TensorVizion/OmniNodes inserts new frames between each consecutive pair - and it does it with real motion compensation, not just fading one frame into the next.
The mechanism is a classic: for each frame pair it computes a dense optical flow field with OpenCV's Farneback method (calcOpticalFlowFarneback), then warps both frames toward each intermediate timestep and cross-fades the two warped results. That's the difference between "motion-compensated interpolation" and "crossfade soup": because each in-between frame follows the actual movement, moving subjects slide instead of ghosting. Set interp_frames to 1 and every 2-frame step becomes 3; at 8 you're inserting 8 between each pair.
The honest expectations
This is classic optical-flow interpolation, not an ML super-resolution of motion like RIFE-style models. It's fast and dependency-light, and it handles slow, smooth motion beautifully. Fast, complex motion - a hand waving, a quick pan with parallax - will show the classic artifacts: warping, smearing, or the odd piece of background moving when it shouldn't. For those cases a dedicated frame-interpolation model (the ecosystem's RIFE packs) is the right tool, at the cost of a big model download and much slower inference. Know which league you're in.
Also worth noting: OpenCV is optional. If it's not installed, the node automatically falls back to a plain linear cross-fade (no motion compensation) and reports which method it used in the summary - so you won't get a hard failure, just softer results.
Inputs and outputs
Inputs: images (the batch) and interp_frames (0β8, default 1; 0 passes through untouched). Outputs: images (the longer batch) and summary (including which interpolation method ran).
Install
Part of OmniNodes:
cd ComfyUI/custom_nodes
git clone https://github.com/TensorVizion/OmniNodes
For the full motion-compensated path you also need OpenCV:
pip install opencv-python
Install into the same Python environment ComfyUI runs in, then restart. The node lives under TensorVizion/Video.
Troubleshooting
- Output is a fade, not motion-compensated - OpenCV isn't installed. The node silently downgraded; the summary tells you which method it used. Install
opencv-pythonand it'll use Farneback. - Warping/ghosting on fast motion - that's the ceiling of classical optical flow. Drop
interp_framesor use an ML interpolator for that clip. - Frame count doubles unexpectedly -
interp_framesis per gap, so 1 doubles the length (every pair gains one frame). Set it to 0 for a passthrough.
Reach for it when a sequence needs to breathe. Paired with the pack's Latent Interpolate output and a Video Save, it's the difference between a morph show and something that reads as video.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | β | |
| interp_frames | INT | 10β8 | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | β |
| summary | STRING | β |