ComfyUI Node

H3 Import Source

Your MP4 Doesn't Fit H3's Grid — This Node Makes It

By Adudeguyman·Created about a month ago·Updated about 20 hours ago· 27
H3 Import Source
  • images
  • vae
  • audio
  • audio_vae
  • latent
  • images
  • audio
  • report
source_fps24.000
width928
height928
cropcenter
keeptail

The problem this solves

Long H3 videos are chains, and a chain has to start somewhere - usually not with H3. It's a live-action plate you shot, a clip from another model, or last week's master you want to keep going. Drop that into an H3 workflow and nothing lines up: it's 30fps, it's 1080p when your project is 928×928, and its length is whatever it happens to be rather than something H3 can render.

H3 Import Source is the in-graph version of the suite's Import… button - conform outside footage onto H3's grids, encode it, hand back a clip you can save as clip 1. Same conforming either way; the panel just shows you a filmstrip, and this node writes a text report.

What it actually does to the footage

H3 runs at 24fps and its clip lengths sit on a ladder of 17m + 5 frames - 5, 22, 39, 56, the same numbers as the pack's context-length dropdown. Nothing here is free-form.

Frame rate conversion is by index, not interpolation: each 24fps frame centre picks a real source frame, so nothing is blended and no pixel gets invented. Which means the node has to trust you about the source rate - an IMAGE batch carries no fps, hence the required source_fps.

Length then snaps down to the nearest rung, and the leftovers are trimmed from one end. keep decides which: tail (the default) keeps the finish, head the start, center trims both evenly - tail by default, because imported footage usually leads into a chain.

Picture is resized to width×height with lanczos. crop: center fills that box by cropping the edges; disabled isn't "keep everything" - it just resizes, so a mismatched aspect ratio comes out squashed. Want bars? Letterbox before the node.

Audio is optional and well behaved: resampled to the audio VAE's rate, then conformed to exactly what the kept frame count implies at 24fps. Both streams are packaged into one latent, the shape the rest of the suite expects.

The sockets that matter

Required: images (any loader you use), source_fps (take it from the loader, not from memory - a wrong value stutters at every join), width, height, crop, keep, and vae, the H3 video VAE. Optional: audio and audio_vae, only if you wired audio.

Four things come out. latent is the encoded clip → H3 Project Save. images is exactly the frames that latent contains, also → Project Save, so the video it writes shows what was really kept. audio is the conformed waveform, same destination. report is a string: frames in, rate converted, frames dropped and from which end, the final seconds and latent steps. Wire it to any text preview and read it before you approve. This isn't an output node, either - nothing hits disk until Project Save is downstream.

Installing it

One install, because it ships with the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/Adudeguyman/ComfyUI-H3-Project-Suite

Restart ComfyUI and hard-refresh the browser (Ctrl+Shift+R) - the pack serves its own panel over /h3_suite/ routes and a stale cache will hide it. Manager works too; search the pack title. No extra downloads: you need the H3 video and audio VAEs you're already running, and av/numpy ship with essentially every ComfyUI install.

One conflict: if you have the original ComfyUI-H3-Motion-Context, remove or disable it. The pack detects it and refuses to run rather than produce a bad render. Other H3 motion-context forks coexist fine.

Where people get burned

The audio sync trap. If the source audio is longer than the kept video, the node takes the last matching span of samples - regardless of keep. With keep: tail that lines up perfectly. With keep: head the picture came from the front and the audio from the back, so they drift. If there's sound, leave keep on tail or pre-trim the file.

Audio that isn't this video's audio. Conformance has a guard rail at half a percent: a frame count lands between audio steps, so a tiny correction is normal, but beyond that the node refuses with both durations spelled out rather than stretching and drifting your whole chain. Trim them to match, or unwire the audio.

Wired audio without an audio VAE throws immediately, by name - as does a sample-rate mismatch when torchaudio isn't around to resample. Rare on a normal install, likelier on stripped-down portable builds.

Footage shorter than 5 frames after conforming can't be a clip at all, and you get a fixed error saying so. A 4fps phone timelapse will do this.

Picking resolution after the fact. A chain is locked to the size of its first clip, and an imported clip is the first clip. Decide the aspect ratio now - hence the Resolution Selector the panel workflow wires into the Hub's width/height before any footage exists.

And the boring one: the weights. MiniMax's community licence excludes the US, EU, UK and Korea from the territory where you're licensed to run H3 locally at all. Licensing problem, not a node problem - but check before debugging your install.

CategoryMiniMax H3

Inputs (9)

NameTypeDefaultDescription
imagesIMAGEthe source footage, from any loader you already use
source_fpsFLOAT24.0001–240the rate the footage was shot or rendered at. Wrong here means a stutter at every join, so take it from the loader rather than guessing.
widthINT92816–4096
heightINT92816–4096
cropCOMBOcenter2 options: disabled, center
keepCOMBOtailwhich end survives the trim. 'tail' keeps the end, which is what you want when the footage runs INTO the chain.
vaeVAEH3 video VAE
audiooptAUDIOoptional. Conformed to the kept video's length; wildly mismatched audio is refused rather than stretched.
audio_vaeoptVAEH3 audio VAE, needed only when audio is wired

Outputs (4)

NameTypeDescription
latentLATENTthe encoded clip, for H3 Project Save
imagesIMAGEexactly the frames that latent contains, for H3 Project Save so the saved video shows what was kept
audioAUDIOthe conformed audio, for H3 Project Save
reportSTRINGwhat conforming did, in words