RunningHub MiniMax H3 Video Gen (Text / Keyframes)
Text, keyframes, or dubbing in one box
- h3_model
- h3_text_encoder
- h3_vae_bundle
- first_frame
- last_frame
- source_video
- sampler_config
- frames
- audio
- av_latent
MiniMax H3 is the 33B omni-modal video model that generates picture and sound together - native stereo audio, not a music box bolted onto a silent clip. In ComfyUI, RHMiniMaxH3VideoGen is the front door. One node, three jobs, decided purely by what you plug into it: nothing plugged in is text-to-video-plus-audio (T2VA), first and/or last frame connected is keyframe generation (FL2VA), and a source_video is dubbing - the clip's picture becomes a clean condition and only the audio is regenerated.
No SGLang server, no Diffusers pipeline, no API key. The whole thing runs in your ComfyUI process.
How it works
The node is the modern all-in-one that replaced the old granular chain of target, text-encode, encode, and sampler nodes. Internally it's still that chain - it loads the FL2VA DiT, the Qwen3-VL text encoder, and the dual video/audio VAEs, resolves the output shape, builds conditioning, runs the joint video+audio sampler, and decodes - but you never see the plumbing. It even caches the static conditioning so re-runs skip re-encoding. The catch: this all-in-one version is only worth it if the models are actually there, because it auto-loads them from models/MiniMax-H3-INT8-CONVROT/ on first run.
The inputs that matter
- prompt - multiline. Write the visual and audio in one go; the model treats them as one context.
- aspect_ratio - 21:9 down to 9:16.
autoonly works when there's image/video material to reference; pure-text generation has to pick one. - width / height - 0 means "derive from aspect ratio," and anything non-multiple-of-32 gets floored. Leave them at 0 unless you know why not.
- duration_seconds - 4–15. In keyframe mode it must be explicit; in dubbing mode 0 takes the source video's max usable slot.
- seed, steps, video_shift, audio_shift, sampler_mode, accel - the sampler bank. Defaults are sane:
res_multistepat 21 sigma points gives roughly Euler-50 quality at about half the DiT passes,video_shift12 /audio_shift3 are the official flow shifts.acceldefaults to off because the acceleration profiles are calibrated at 50 steps and overlap poorly with the 21-point path.
Optional first_frame and last_frame (keyframes, mutually exclusive with source_video) plus override inputs h3_model, h3_text_encoder, h3_vae_bundle if you want to hand it components from the loaders, and sampler_config if you're into the experimental knobs.
Outputs
Three, and they're what make this pack nice: frames (IMAGE), audio (AUDIO), and av_latent (the joined latent, if you want to re-sample instead of decode).
Install and models
Manager: search "ComfyUI-RH-MiniMax-H3" and hit install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/RH-RunningHub/ComfyUI-RH-MiniMax-H3.git
pip install -r ComfyUI-RH-MiniMax-H3/requirements.txt
Restart, then the real project: ~95 GiB of INT8 ConvRot weights into models/MiniMax-H3-INT8-CONVROT/:
cd /path/to/ComfyUI
hf download Gluttony10/MiniMax-H3-INT8-CONVROT --local-dir ./models/MiniMax-H3-INT8-CONVROT
You want ComfyUI 0.27+, a CUDA PyTorch build, and ffmpeg/ffprobe on PATH for the reference paths.
Where people get burned
aspect_ratio=auto on a pure-text run errors immediately - there's nothing to reference. Keyframe mode without an explicit duration also refuses. And before you point this at a 8GB card: Qwen3-VL 32B plus the DiT is a big resident footprint; the INT8 weights help, but you still need serious VRAM or patience with offload. One more thing to know up front: the MiniMax H3 Community License excludes the US, EU, UK, and South Korea - if you're in those regions you're not licensed to run these weights locally, even though the pack installs fine.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | 提示词;引用素材用 图N/视频N/音频N(按各类型接入顺序编号) | |
| aspect_ratio | COMBO | 16:9 | auto 仅在有图片/视频素材可参照时可用 |
| width | INT | 0 | 0 = 按 aspect_ratio 自动解析;非 32 倍数向下取整 |
| height | INT | 0 | 0 = 按 aspect_ratio 自动解析;非 32 倍数向下取整 |
| duration_seconds | FLOAT | 5.00–15 | 0 = 自动(配音模式取源视频最大档位;参考模式从唯一音频推导) |
| seed | INT | 420–9223372036854776000 | 随机种子;同参同种子可复现 |
| steps | INT | 212–1000 | 采样 sigma 点数;res_multistep 推荐 21(20 次 DiT)≈ euler-50 质量 |
| video_shift | FLOAT | 12.000.01–100 | 视频流 flow shift;官方默认 12.0 |
| audio_shift | FLOAT | 3.000.01–100 | 音频流 flow shift;官方默认 3.0 |
| sampler_mode | COMBO | res_multistep | res_multistep=二阶多步(推荐,21 点);euler=官方一阶(50 点) |
| accel | COMBO | 近似加速档位;off=关闭。manual-* 档展开对应旋钮 | |
| h3_modelopt | MINIMAX_H3_DIRECT_MODEL | 覆盖内部 DiT 加载(如 Loader→FrameRate 链);留空自动加载转换模型。接入后仍由本节点的 attention_backend 决定注意力实现 | |
| h3_text_encoderopt | MINIMAX_H3_TEXT_ENCODER | 覆盖内部文本编码器加载;留空自动加载转换模型。DiT 与文本编码器不在同一权重目录时(如 int8 DiT + 原始 TE)必须显式接入 | |
| h3_vae_bundleopt | MINIMAX_H3_VAE_BUNDLE | 覆盖内部双 VAE 加载;留空自动加载转换模型。需要混用不同目录的 VAE 权重时显式接入 | |
| first_frameopt | IMAGE | 首帧(fl2va);与 source_video 互斥 | |
| last_frameopt | IMAGE | 尾帧(fl2va),可单独使用;与 source_video 互斥 | |
| source_videoopt | VIDEO | 配音模式(v2a):视频画面作为干净条件,仅生成音频。素材应为 24fps;duration=0 自动取最大可用档位 | |
| sampler_configopt | MINIMAX_H3_SAMPLER_CONFIG | 接 Sampler Config 节点填实验性旋钮;不接走默认 | |
| allow_accel_with_res_multistepopt | BOOLEAN | false | 允许 res_multistep 叠加 accel;未标定组合,默认关闭 |
| attention_backendopt | COMBO | auto | DiT 注意力:auto=服从 ComfyUI 本体,sdpa=PyTorch SDPA,sage=强制 SageAttention(未安装会明确报错),ck=Comfy Kitchen INT8(同 --use-ck-attention,未就绪会报错) |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |
| audio | AUDIO | — |
| av_latent | MINIMAX_H3_AV_LATENT | — |