Interpolate KeyFrame
FastBlend's cheaper sibling — render some frames, interpolate the rest
- orginalframe
- keyframe
- IMAGE
SmoothVideo, this node's sibling in the same pack, renders every single frame through FastBlend's patch-matching algorithm. InterpolateKeyFrame is the budget version: it treats only a slice of your frames as "real" and interpolates the gaps between them. The README's own line for it is blunt - "smooth video only use a portion of the frames." If a full per-frame pass is too slow or too much VRAM for your clip, this is the node that trades some of the smoothing quality for a lot less compute.
How it works
It's the same FastBlend engine as SmoothVideo - patch matching across a temporal window, guided by a motion-source sequence - just applied selectively. Instead of processing orginalframe against keyframe for every index, it picks every Nth frame as an anchor and fills in the rest by blending from those anchors rather than doing the full patch search on each one. That's the whole value proposition: fewer full computations, output stitched from a sparser set of reference points. This is the same "sparse keyframe, dense interpolation" idea that showed up elsewhere in the SD 1.5 video ecosystem - AnimateDiff's SparseCtrl did the analogous trick for diffusion sampling (start frame, end frame, fill the middle) - except FastBlend applies it to its own patch-matching pass instead of a denoising pass.
The inputs and outputs that matter
orginalframeandkeyframe(IMAGE) - same roles as SmoothVideo: the motion-source sequence and the sequence you want smoothed.select_every_nth(default 5, range 0–20) - the actual lever that makes this node different from SmoothVideo. This decides how sparse the anchor frames are; a smaller number means more frames get full treatment (closer to SmoothVideo's behavior, slower); a larger number leans harder on interpolation (faster, more room for drift between anchors).batch_size(default 16) - same speed/VRAM tradeoff as everywhere else in this pack.tracking_window_size(default 1) - undocumented in the README beyond its presence; note it defaults differently here than in SmoothVideo (1 vs 0), which suggests it matters more for the interpolation path, but treat it as an advanced knob you tune empirically rather than by theory.minimum_patch_size(default 15, step 2, must stay odd) - notably a much higher default than SmoothVideo's 5, worth knowing if you're used to that node's settings.num_iter(default 5) andguide_weight(default 10) - same meaning as SmoothVideo: more iterations for quality, guide weight for how much motion gets imposed on the style frames.
Output is a single IMAGE batch, same as SmoothVideo - feed it to a Save Image or Video Combine node.
How to install it
Comes with the same pack as SmoothVideo, so if you've already installed ComfyUI-fastblend for one you have the other. Via ComfyUI Manager: search "ComfyUI-fastblend," install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/AInseven/ComfyUI-fastblend
Restart ComfyUI. No model files - it's the same algorithmic (not neural) approach as SmoothVideo.
Common issues & troubleshooting
Results look choppier or less consistent than SmoothVideo. That's the expected tradeoff - you're asking it to fake a chunk of the frames from sparse anchors. If quality matters more than speed for a given shot, drop select_every_nth toward 1 (closer to a full per-frame pass) or just switch to SmoothVideo outright.
The underlying algorithm isn't a universal win. Same caveat as SmoothVideo: FastBlend's patch-matching approach gets mixed reception in the wild - it's a real, working technique, not a guaranteed fix for every flicker problem, especially on fast or erratic motion.
Slow or VRAM-heavy on long clips. Lower batch_size, or pre-chunk your sequence with the pack's own reBatchImage node before feeding it in here.
minimum_patch_size must be odd - same rule as SmoothVideo, and it defaults higher here (15), so if you copy settings between the two nodes, double check this one didn't carry over an even number by accident.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| orginalframe | IMAGE | — | |
| keyframe | IMAGE | — | |
| select_every_nth | INT | 50–20 | — |
| batch_size | INT | 161–100 | — |
| tracking_window_size | INT | 11–100 | — |
| minimum_patch_size | INT | 151–100 | — |
| num_iter | INT | 51–100 | — |
| guide_weight | FLOAT | 10.01–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |