Topaz Frame Interpolation
Topaz Frame Interpolation, and the frame-count arithmetic that trips everyone
- images
- engine
- images
- output_fps
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 totarget_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 byslowmo_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.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| model | COMBO | <no Topaz Video installation found> | 1 options: <no Topaz Video installation found> |
| input_fps | FLOAT | 24.0001–480 | Frame rate the incoming batch represents. |
| mode | COMBO | target_fps | target_fps: interpolate up to a new frame rate. slowmo: keep the frame rate and stretch time. |
| target_fps | FLOAT | 48.0001–480 | — |
| slowmo_factor | FLOAT | 2.00.1–16 | — |
| replace_duplicate_thresholdopt | FLOAT | 0.010-0.01–0.2 | Detect and replace duplicate frames. 0 or below disables it. |
| engineopt | TOPAZ_ENGINE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| output_fps | FLOAT | — |