Frame Interpolate
Fake the high-fps camera you don't own
- video
- video
Choppy 24fps footage and slow-motion are two problems with one solution: synthesize the frames that weren't captured. Frame Interpolate is ComfyTV's motion-compensated interpolator, built on FFmpeg's minterpolate, and it does both jobs - smooth out frame rate, or stretch a clip into genuine slow motion.
What it does
It generates in-between frames by estimating motion between the frames you have, then writes a new COMFYTV_VIDEO snapshot on ▶ Run. The controls:
- mode -
retime_fps(default) changes the output frame rate for smoother playback;slowmoslows the clip down and time-stretches the audio to match. - target_fps - 24–120, default 60. Only used in
retime_fps. - slow_factor - 2.0–8.0, default 2.0 (half speed). Only used in
slowmo; the interpolator generatessource_fps × factorintermediate frames. - mi_mode - the interpolation method:
mci(motion-compensated, smoothest, default),blend(crossfades frames),dup(duplicates - no real interpolation). Drop toblendifmciproduces artifacts.
When to reach for it
Two classic scenarios. One: your 24/30fps AI clip plays with visible judder and you want it smooth at 60. Two: you want slow motion but never owned a high-fps camera - this is how you fake it convincingly, because unlike Video Speed it actually creates new frames instead of just stretching time. The slowmo mode is the honest version of the trick: it retimes audio through chained atempo filters too, so speech and music stay in sync at the slower speed.
The honest caveat: mci can smear on fast, chaotic motion or heavy occlusion - the motion estimator picks wrong matches and you get warping. Try blend there. And the ordering rule from the docs: denoise before interpolating, because the estimator works far better on clean footage.
Install and troubleshooting
Pack-standard: git clone https://github.com/jtydhr88/ComfyTV into ComfyUI/custom_nodes, restart, under ComfyTV → VideoFX. No models, no GPU - PyAV on disk.
- Smearing on fast motion - switch
mi_modetoblend; it's less clean but far more stable. - Slow-mo audio sounds weird - extreme
slow_factorstrains the time-stretch; smaller factors hold up better. - Interlaced source giving weird results - deinterlace first; the pack ships a Deinterlace stage for exactly this.
Output is a COMFYTV_VIDEO snapshot; cross to native ComfyUI nodes via a ← ComfyTV Video Bridge. Inside the pack, interpolated clips feed everything downstream.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| mode | COMBO | retime_fps | 2 options: retime_fps, slowmo |
| target_fps | INT | 6024–120 | — |
| slow_factor | FLOAT | 2.02–8 | — |
| mi_mode | COMBO | mci | 3 options: mci, blend, dup |
| videoopt | COMFYTV_VIDEO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | COMFYTV_VIDEO | — |