Nodes/AusBoss/Frame Interpolate πŸ†Ž
ComfyUI Node

Frame Interpolate πŸ†Ž

Retime video to a real fps target, not just a doubled one

By ausbossΒ·Created 2 months agoΒ·Updated 3 days agoΒ· 2
Frame Interpolate πŸ†Ž
  • frames
  • frames
  • fps
β—„source_fps24.00β–Ί
β—„target_fps30.00β–Ί
β—„methodblendβ–Ί
β—„scene_cut_threshold0.35β–Ί
β—„batch_size8β–Ί

Most frame interpolation in ComfyUI thinks in multiples: double the frames, and that's your 2x. But the real world wants 24 to 30, or 23.976 to 29.97, and a 2x node can't do that without hand-built math around it. Frame Interpolate πŸ†Ž is built around frames per second instead: you give it the source rate and the target rate, and it resamples the batch to land on the target. 24β†’30 works as naturally as doubling.

How it works

Every output frame is either a direct copy (when it lands exactly on a source frame - those are untouched) or an in-between synthesized from its two neighbors. Two methods:

  • blend - a crossfade between neighbors. Instant, no downloads, no weights. Soft on fast motion, which is its honest limit.
  • optical flow - warps both neighbors along RAFT motion vectors for sharper in-betweens. The catch is in the name: it needs an already-cached RAFT checkpoint and will never download one. If you don't have the weights cached, it falls back or errors - the node says so rather than silently fetching.

scene_cut_threshold (default 0.35) is the smart bit: frames with a mean absolute difference above the threshold count as a hard cut, and instead of morphing across the cut (the smeared-transition look every other interpolator gives you at a scene change), the new frame holds the last frame before it. Set it to 0 to disable cut detection. batch_size just controls how many in-betweens are computed per pass - higher is faster, costs VRAM.

The source_fps tooltip is the hint: wire Load Video's fps output in so the node knows the real rate. The fps output, in turn, is the thing you feed to Save Video so rounding to a whole frame count never drifts the timing.

What comes out

frames - the resampled BHWC batch at the target rate, and fps - the actual output rate. Wire that fps into Save Video πŸ†Ž and the encode stays honest even with fractional rates. Matching target_fps to source_fps passes frames through unchanged, which makes the node a handy no-op gate.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/ausboss/ComfyUI-AusBoss.git

Restart ComfyUI and search for AusBoss (Manager: ComfyUI-AusBoss). No extra Python dependencies; the blend path needs nothing beyond ComfyUI's bundled libraries, the flow path needs your cached RAFT weights. Minimum ComfyUI 0.27.1.

Troubleshooting

Blend-mode ghosting on fast motion is expected, not a bug - that's what the optical flow method is for. If flow mode won't run, the RAFT checkpoint isn't cached; that's the one missing-dependency failure here and the error will say so. Long clips: memory is bounded by planning the work first and streaming results back to the CPU, but the flow path still eats VRAM in proportion to batch_size, so lower it on a long clip. And if the output timing looks wrong, the source_fps is lying to you - check it against the source video's real rate.

CategoryπŸ†Ž AusBoss/Video

Inputs (6)

NameTypeDefaultDescription
framesIMAGEVideo frames as a BHWC IMAGE batch.
source_fpsFLOAT24.000.01–240Frame rate of the incoming batch; wire Load Video's fps output to match the source.
target_fpsFLOAT30.000.01–240Frame rate to resample to. Matching the source fps passes the frames through unchanged.
methodCOMBOblendblend crossfades neighboring frames: instant, no downloads, soft on fast motion. Optical flow warps both neighbors along RAFT motion vectors for sharper in-betweens. It only uses an already-cached checkpoint and never downloads one.
scene_cut_thresholdFLOAT0.350–1Mean absolute frame difference above this counts as a hard cut, and the new frame holds the last frame before the cut instead of morphing across it. 0 disables cut detection.
batch_sizeINT81–256In-between frames computed per batch: higher is faster but uses more VRAM.

Outputs (2)

NameTypeDescription
framesIMAGEThe resampled BHWC frame batch at the target rate.
fpsFLOATThe actual output fps; wire this into Save Video so rounding to a whole frame count never drifts the timing.