APNext H3 Save Clip (decode → disk, low memory)
The save node that keeps long H3 runs from OOMing into the void
- samples
- vae
- images
- audio
- file_path
APNext H3 Save Clip is the quiet hero of this pack: one node that replaces the VAE Decode → Create Video → Save Video chain, and it exists to stop your RAM from becoming a crime scene.
If you've rendered a MiniMax H3 scene list the stock way, you've seen the failure mode. ComfyUI maps each node over the whole scene list before the next one runs, so every decoded clip of an 18-scene music video sits in memory at once. At 1344x768 that's tens of gigabytes of frames that don't exist anywhere on disk until the very end. One OOM and the entire run's renders are gone - you re-queue an hour of sampling and pray. H3 is a 33B omni-modal video model; this is the memory math that makes multi-clip runs genuinely scary.
This node collapses that. It decodes one latent, muxes it with its audio slice, writes the file, and frees the frames before the next list item. Peak memory is a single clip, and every finished clip is already on disk when a later one crashes. That's the whole pitch, and it's a good one.
The inputs that matter
Mostly a "wire and forget" node, but a few fields are yours to set:
filename_prefix- defaultvideo/H3. Wire a writer'sproject_nameoutput here so every run lands in its own folder instead of a shared pile.fps- 24. H3 renders at 24 fps; leave it alone.format-mp4/mkvuse H.264,webmuses AV1.
Then the wiring: either samples + vae (the sampler's output latent, decoded here with the MiniMax H3 video VAE), or images - already-decoded frames, e.g. coming out of an H3 Exact Recover after a de-rope pass. images wins if both are connected. The optional audio input is the clip's slice of the song - wire the writer's audio_segments list so each scene is muxed with its own track. Leave it empty and you get silent clips, which is only funny once.
Output is a single file_path string, handy for a text display or for keeping track of what actually rendered.
Installing it
This ships in the comfyui_dagthomas pack (confusingly titled "SDXL Auto Prompter" - it has long outgrown that name). Install via ComfyUI Manager (search "comfyui_dagthomas") or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/dagthomas/comfyui_dagthomas
cd comfyui_dagthomas
pip install -r requirements.txt
Restart ComfyUI after. The real heavy lifting is the MiniMax H3 model files themselves - the video VAE (minimax_h3_video_vae_fp16.safetensors), audio VAE, diffusion model and the 32B text encoder, all multi-GB, listed with download links in the pack's example workflows. One historical gotcha: very old versions of this pack changed the working directory on load and broke ComfyUI's Restart button; that was fixed upstream, so if Restart dies after installing, update the pack rather than uninstalling it.
Issues you'll actually hit
- The "wire either samples + vae or images" error means you connected neither pair. Add the
vaetosamples, or feedimagesdirectly. - Silent output means
audiowasn't connected - the pack's writers hand youaudio_segmentsfor exactly this. - It's an output node: wire it as the end of a branch and let it run once per scene. That per-scene decode-then-free loop is the whole point, so don't bypass it with a manual
VAE Decodeupstream unless you have a reason.
It won't make your renders faster. It makes them survive.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| filename_prefix | STRING | video/H3 | Where the clips go under the output directory - wire a writer's `project_name` output here so every run lands in its own folder. |
| fps | FLOAT | 241–120 | H3 renders at 24 fps. |
| format | COMBO | mp4/mkv use H.264, webm uses AV1. | |
| samplesopt | LATENT | The sampler's output latent (the H3 AV latent). With a list of scenes wired in, the node runs once per scene and saves each clip before decoding the next. Needs `vae`. Ignored when `images` is wired. | |
| vaeopt | VAE | The MiniMax H3 video VAE (required with samples). | |
| imagesopt | IMAGE | Already-decoded frames (e.g. from H3 Exact Recover after a de-rope pass). Wired, they are saved directly and samples/vae are ignored. | |
| audioopt | AUDIO | This clip's soundtrack - wire the writer's `audio_segments` list so each scene is muxed with its own slice of the song. Empty = silent clips. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| file_path | STRING | — |