H3 Continuum Video Adapter
Core Load Video Doesn't Speak H3 — This Adapter Translates
- video
- images
- audio
Wondering why there's an extra node between your video loader and the sampler? ComfyUI Core's Load Video hands out a VIDEO object, and the Sampler's Timeline Video Frames input wants a plain IMAGE batch of frames at 24fps. This node is that conversion, and literally nothing else. Two inputs, two outputs, one number to set.
It exists because V3.8 moved file selection back to Core. The pack used to ship its own H3 Continuum Load Video with a file picker, an Enable switch and a force-rate widget - the VHS-style pattern - and that loader kept tripping over frontend persistence bugs (there's a whole repair record about saved filenames and Bypass state going missing). So Core owns video selection now, and the part Continuum actually needs - frame-rate normalisation - got carved out into this small adapter.
How it works
It asks the incoming VIDEO for its components: frames, audio, and the source frame rate. Then it resamples the frames to your target rate by dropping or duplicating whole frames - nominal duration is preserved, so a 5-second clip stays 5 seconds. If the requested rate is 0 or already matches the source, frames pass through untouched.
Audio is passed straight through, unmodified. If the source video has no audio track, the audio output becomes a blocked/empty value rather than a fabricated silent track - that's deliberate, because wiring a fake track into Driving Audio would silently replace H3's generated audio with nothing.
One thing worth knowing about the cost profile: the adapter holds the entire decoded frame batch in system memory, which is exactly why the README says Timeline Video is not a long-input RAM optimisation. H3 is already a 33B model people run with offloading; a video guide adds preprocessed frames on top.
The inputs and outputs that matter
video(required,VIDEO) - from CoreLoad Video. Nothing else feeds it correctly.force_rate(FLOAT, default 24, range 0–120, step 0.01). The author's tooltip: "24 resamples to H3's expected FPS without changing nominal duration or audio. 0 keeps source frames (not normally for H3)." Leave it at 24 unless you have a specific reason.images(IMAGE) - wire this to the Sampler's Timeline Video Frames input.audio(AUDIO) - wire this toDriving Audio(withDriving Audio VAE) only if you want the source audio to both guide generation and become the final audio. Skip it otherwise.
The canonical wiring, straight from the README:
Core Load Video -> H3 Continuum Video Adapter -> Timeline Video Frames
Connect the images output and a new widget appears on the Sampler: Video Reference Mode. Repeat Reference is the default and keeps the legacy contract - every generation group gets the same bounded prefix of the source. Follow Timeline is the experimental one: it advances through the source using the 24fps interval that corresponds to each physical output group, without consuming continuation-prefix frames twice. It doesn't loop or stretch a short source, it doesn't change Seconds per Chunk, and it doesn't use the source video's audio automatically. The author is refreshingly honest: it isn't frame-perfect motion copying. There's also a Video Guide Size control on the Sampler under Advanced (Efficient - 0.4 MP, Balanced - 0.6 MP, Match Output) if memory gets tight.
Installing it
Part of the pack, no separate install:
cd ComfyUI/custom_nodes
git clone https://github.com/ukr8b3g-cmyk/ComfyUI-H3-Continuum.git
Restart ComfyUI. Manager users can search H3 Continuum instead; if Manager installed it, use Manager's Update rather than layering a git checkout on top. There are no extra pip dependencies - the pack's requirements.txt is a single comment saying it uses the PyTorch and safetensors that ship with ComfyUI (requires-comfyui >= 0.32.0). H3 weights, VAEs and the text encoder are separate downloads, and the supplied V3.8X2 workflow wants Spectrum, rgthree and KJNodes installed to open fully.
Gotchas
Don't bypass only the loader. This is the trap the README calls out explicitly. If you bypass Core Load Video while leaving the adapter active, the adapter's required video input is unsatisfied and you get an error. To disable video guidance, bypass the adapter itself or the whole video-input group.
Don't reach for force_rate = 0 on H3. It means "keep whatever the source was" - fine for inspecting frames, wrong for H3's 24fps contract.
A silent source isn't an error. You get a blocked audio output, not a crash. Just don't wire it anywhere.
The legacy loader still exists. H3 Continuum Load Video is still registered for old workflows, complete with its own Force Rate. New graphs should use Core Load Video plus this adapter; mixing the two paths just makes Bypass states harder to reason about.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| video | VIDEO | — | |
| force_rate | FLOAT | 24.000–120 | 24 resamples to H3's expected FPS without changing nominal duration or audio. 0 keeps source frames (not normally for H3). |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| audio | AUDIO | — |