Nodes/H3 Relay/H3 Relay · Interpolate
ComfyUI Node

H3 Relay · Interpolate

48fps smoothness without OOMing your RAM

By akatz-ai·Created 28 days ago·Updated 8 days ago· 15
H3 Relay · Interpolate
  • interpolation
  • enhanced
  • enhanced
  • video
  • video_path
  • status
multiplier2
output_crf18
chunk_frames48

Here's the thing about interpolating H3 Relay's output the naive way: your LTX-enhanced shots are 15-second, 1664x960 float-frame videos, and a monolithic RIFE pass over the whole thing parks a tensor that size in system RAM for the duration. Do that across a multi-shot movie and you're flirting with an OOM. H3RelayInterpolateShot exists so you don't have to.

It takes your latest LTX result and the interpolation model bundle, runs ComfyUI's core frame-interpolation runtime in temporally streamed chunks, and hands you back both an updated enhanced state and a finished video. It's the pack's smoothing stage - the thing that takes you from LTX's 24fps to 48/60/whatever you can afford.

How the chunking actually works

The clever bit is in chunk_frames (default 48). Interpolation processes 48 source frames at a time, and adjacent chunks share one exact boundary frame. That duplicate boundary frame is interpolated twice, the repeated output frame is discarded, and the remaining adjacent pairs are mathematically identical to what a monolithic pass would produce. In other words: the chunk size is purely an execution-memory setting. It doesn't change the result, and it deliberately doesn't invalidate an otherwise-identical cached interpolation. Each chunk is encoded immediately, so RAM stays bounded by one chunk instead of one whole movie.

The inputs that matter

  • interpolation (H3_RELAY_INTERPOLATION) - from the Interpolation Model Loader.
  • enhanced (H3_RELAY_ENHANCED) - the latest LTX result. Note: you interpolate in order, one node per accepted LTX shot.
  • multiplier (default 2, range 2–16) - how many frames per source frame. 2 is the standard motion-smoothing bump; crank it only if you love waiting.
  • output_crf (default 18) - H.264 quality of the cached segment. Lower is higher quality; 18 is a solid master. It controls the encode, not the interpolation, so changing it re-encodes a derived variant without repeating inference.
  • chunk_frames (default 48, 8–256, steps of 8) - the memory knob above. Lower it on a tight machine; raising it reduces per-chunk overhead.

Outputs: enhanced (pass the interpolated state on to Assemble), video (VIDEO), video_path (STRING), and a status string. The VIDEO output can feed a native Save Video node to publish to output/.

The workflow rule that trips people up

Interpolation consumes and returns the same enhanced type, which is how the pack lets you choose your delivery: bypass every Interpolate node and the final movie assembles from LTX video at 24fps; enable them and it assembles the interpolated version. And because interpolation only runs on the latest accepted shot, the error you'll hit - "Interpolate each accepted LTX shot in order before continuing" - means you skipped one. Walk them in sequence.

Install: ComfyUI Manager → H3 Relay, or git clone https://github.com/akatz-ai/h3-relay into custom_nodes, restart. Needs the RIFE checkpoint in models/frame_interpolation and FFmpeg on PATH.

CategoryH3 Relay

Inputs (5)

NameTypeDefaultDescription
interpolationH3_RELAY_INTERPOLATION
enhancedH3_RELAY_ENHANCED
multiplierINT22–16
output_crfINT180–51
chunk_framesINT488–256Temporal source frames processed per interpolation chunk. Adjacent chunks share one exact boundary frame.

Outputs (4)

NameTypeDescription
enhancedH3_RELAY_ENHANCED
videoVIDEO
video_pathSTRING
statusSTRING