Nodes/ComfyUI-TopazVideoLocal/Topaz Frame Interpolation
ComfyUI Node

Topaz Frame Interpolation

Topaz Frame Interpolation, and the frame-count arithmetic that trips everyone

By donangel85·Created 2 days ago·Updated 2 days ago· 0
Topaz Frame Interpolation
  • images
  • engine
  • images
  • output_fps
model<no Topaz Video installation found>
input_fps24.000
modetarget_fps
target_fps48.000
slowmo_factor2.0
replace_duplicate_threshold0.010

Smooth out choppy AI-generated video, slow a clip down properly, or turn 24 fps footage into something a 60 fps timeline won't choke on - that's this node's job, using Topaz's motion models (Apollo, Aion, Chronos) on your local Topaz Video installation. If your final video plays at the wrong speed, though, this is very likely the node that did it, and it's worth reading the "how many frames come back" bit below before you wire anything.

How it works

Like the rest of the pack it pipes your IMAGE batch raw into Topaz's ffmpeg, through the tvai_fi interpolation filter, and hands you back a new batch. Interpolation is the one node in the pack where the output frame count deliberately differs from the input, because it invents the frames between the ones it was given - and there is no gap after the last one. Measured on Apollo (apo-8), 24 frames at 24 fps:

| Mode | Frames out | Output fps | |---|---|---| | target_fps 48 | 47 | 48 | | target_fps 96 | 93 | 96 | | slowmo 2x | 47 | 24 | | slowmo 4x | 93 | 24 |

So target_fps at factor k returns N·k − (k−1), not the round number your intuition wants. You'd think 24→48 gives 48. It gives 47.

The two modes, and what they mean for audio

  • target_fps (default) - raises the frame rate to target_fps. The running time stays roughly the same (1.0s in → 0.979s out at 2x), which means the audio still fits. This is the mode for smoothing.
  • slowmo - keeps the frame rate and stretches time by slowmo_factor. The clip genuinely gets longer (1.0s in → 1.96s at 2x), so the audio no longer fits. Handle it separately or leave it out.

The node's second output, output_fps, already carries the correct rate for whichever mode you picked. Use it. Wire it into Create Video instead of typing the number twice - in slowmo it stays at the input rate, which is exactly the value that trips people up when they assume it matches target_fps.

Inputs and outputs

Required: images, model, input_fps (the rate your incoming batch represents - get this right or the whole calculation is off), mode, and whichever of target_fps / slowmo_factor applies. The one optional worth knowing: replace_duplicate_threshold (default 0.01) detects and swaps out duplicated frames - 0 or below disables it. If your source has holds or freeze frames, this is what keeps them from being treated as motion and producing odd interpolations.

Outputs are images (the new frame batch) and output_fps (a FLOAT). Both come out of the node; output_fps is the one beginners orphan on the canvas.

Install

Same as the whole pack - from ComfyUI's custom_nodes folder:

git clone https://github.com/donangel85/ComfyUI-TopazVideoLocal.git

Restart ComfyUI, no pip step (numpy is already there), and ComfyUI Manager finds it under "TopazVideoLocal". Real prerequisites: Windows, a licensed Topaz Video install that's signed in, and the model weights on disk ([download required] models need allow_model_download on the Engine Settings node, or one run in the Topaz app).

Common issues

The classic failure isn't an error - it's a clip that plays too fast or too slow downstream, because a Create Video node was told the wrong frame rate. In target_fps mode wire output_fps into it; in slowmo mode the rate is the input rate, so wire input_fps and treat the audio as a separate problem. If nothing runs at all, start from the pack's Topaz Diagnostics node, which will tell you whether the install, models or licence is the actual blocker.

CategoryTopaz Video Local

Inputs (8)

NameTypeDefaultDescription
imagesIMAGE
modelCOMBO<no Topaz Video installation found>1 options: <no Topaz Video installation found>
input_fpsFLOAT24.0001–480Frame rate the incoming batch represents.
modeCOMBOtarget_fpstarget_fps: interpolate up to a new frame rate. slowmo: keep the frame rate and stretch time.
target_fpsFLOAT48.0001–480
slowmo_factorFLOAT2.00.1–16
replace_duplicate_thresholdoptFLOAT0.010-0.01–0.2Detect and replace duplicate frames. 0 or below disables it.
engineoptTOPAZ_ENGINE

Outputs (2)

NameTypeDescription
imagesIMAGE
output_fpsFLOAT