Nodes/Nynxz H3/H3 Video
ComfyUI Node

H3 Video

Reference video, soundtrack attached — and don't lie about fps

By Nynxz·Created about a month ago·Updated 25 days ago· 4
H3 Video
  • frames
  • audio
  • latent
  • h3_inputs
  • h3_inputs
fps24.00
detailfull

H3's standout trick is that it's omni-modal - a reference video comes with its own soundtrack, and the model treats the pair as one thing. H3 Video is how you hand that pair over: wired frames plus an optional audio input, all bound together on one node so a clip and its audio can't drift apart.

Why it exists as its own node

ComfyUI's core H3 support pairs reference-video audio with reference video by slot number - ref_video_audio_N with ref_video_N. Put a silent clip in an early slot and every later soundtrack lands on the wrong video, with nothing on screen telling you. H3 Video sidesteps all of that by binding frames, fps, soundtrack and detail level on one node, and chaining it onto the pack's h3_inputs wire.

The inputs that matter

  • fps - set this to the frames' real rate. H3 presents reference video at 24 fps and derives timestamps from it, so a wrong value plays the reference at the wrong speed and mislabels its <T.T seconds> marks. This is the one that bites people.
  • detail - full / half / quarter, a pure cost dial. Reference rows ride every sampling step, and a video reference is usually a third of the whole sequence, so half cuts roughly a quarter off the run and a similar slice off peak VRAM. It costs no alignment - H3's spatial rope depends on aspect ratio alone, so a half-resolution reference sits in the identical coordinate box and stays registered to the target. Use full only when the reference is the sole source of fine detail.
  • audio - the soundtrack, which needs the audio VAE wired on H3 Encode.
  • latent - the sneaky-good one. Pass in this same video's H3 latent (say, from an earlier sampler) and H3 Encode skips the VAE encode entirely. That's exactly what a regenerate pass wants: the first pass's own latent, no decode/re-encode round trip to lose detail through. You still need the frames, because the Qwen3-VL text encoder reads pixels.

Frames are resampled nearest-neighbour onto H3's 24 fps, which is fast and fine for a reference.

Install

Pack install: ComfyUI Manager → "Nynxz H3", or:

cd ComfyUI/custom_nodes
git clone https://github.com/Nynxz/ComfyUI-NynxzH3

Restart. Pure Python, no dependencies, needs ComfyUI 0.30.0+. The audio VAE is a separate model file from the video VAE, so if an audio reference silently does nothing, that's the first thing to check.

The one-liner

Set fps to the truth, drop detail to half unless the reference is carrying all the fine detail, and keep the clip and its soundtrack on this one node. If identity wanders on a regenerate, latent is the input that stops the round-trip loss.

CategoryNynxz/H3

Inputs (6)

NameTypeDefaultDescription
framesIMAGEThe video as an IMAGE batch, in order.
fpsFLOAT24.001–240The frames' actual frame rate. They are resampled onto H3's 24 fps from this, so a wrong value plays the reference at the wrong speed and mislabels its <T.T seconds> timestamps.
detailCOMBOfullHow much resolution this reference is fed in at — a pure cost dial. Reference rows ride every sampling step, and a video reference is usually a third of the whole sequence, so 'half' takes roughly a quarter off the run and a similar amount off peak VRAM. It costs no alignment: H3's spatial rope depends on aspect ratio alone, so a half-resolution reference sits in the identical coordinate box and stays registered to the target. Use 'full' when the reference is the only source of fine detail.
audiooptAUDIOSoundtrack for these frames. Packs the reference as video+audio, and needs H3's audio VAE on the encode node.
latentoptLATENTThis same video as an H3 latent, when you already have one — the output of an earlier sampler. H3 Encode then skips the VAE encode and uses it directly, which is what a regenerate pass wants: the first pass's own latent, with no decode/re-encode round trip to lose detail through. The frames are still needed, because Qwen3-VL reads pixels.
h3_inputsoptNYNXZH3_INPUTAnother H3 node upstream. Its assets come first, then this one's.

Outputs (1)

NameTypeDescription
h3_inputsNYNXZH3_INPUT