Nodes/ComfyUI_JR_MiniMaxH3Node/JR MiniMax H3 Enhanced Video Combine
ComfyUI Node

JR MiniMax H3 Enhanced Video Combine

The video output node that tries every encoder before it gives up

By Goldlionren·Created about a month ago·Updated about 18 hours ago· 50
JR MiniMax H3 Enhanced Video Combine
  • images
  • audio
  • frames
  • filename
frame_rate24.00
codecAuto
containerAuto
bit_depthAuto
quality20
log_levelStandard
pingpongfalse
save_metadatatrue
filename_prefixvideo/%date:yyyy-MM-dd%/%date:hhmmss%
save_outputtrue
pass_framesfalse
crop_to_audiofalse
audio_codecAuto
audio_bitrate192k
save_first_framefalse
save_last_framefalse

The last mile of any video workflow is getting frames off the GPU and into a file that plays everywhere, and that's where most stock combine nodes show their age. The JR H3 Enhanced Video Combine is this pack's output node: it takes an IMAGE batch, encodes it with FFmpeg, and gives you an in-node video preview with autoplay, download, and save-first/last-frame buttons. The filename STRING output is the real "what did you write" answer, and frames (the IMAGE passthrough) feeds downstream nodes when pass_frames is on.

How it decides what to use

The codec/container/dimension decisions are set by dropdowns: codec (Auto/AV1/VP9/H.265/H.264), container (Auto/WebM/MKV/MP4/Animated WebP/Animated AVIF), bit_depth (Auto/8-bit/10-bit), quality (0–51, lower is better), frame_rate (default 24 - H3's native cadence), plus audio options (audio_codec AAC/Opus/MP3, audio_bitrate 64k–320k) and a crop_to_audio toggle. Behind the scenes it walks an encoder priority list - NVENC → QSV → AMF → VAAPI → software - and picks the first one FFmpeg actually has. That's why "it just works" on most rigs: it's not one encoder, it's a fallback chain.

The fallback story is the interesting part. H.264 NVENC tops out around 4096 pixels wide, and when a horizontal stitch produces something like 4352×2880, the node recognizes Windows' EPIPE/EINVAL (Errno 22) encoder failure and quietly falls back to libx264. The file still saves - it's just noticeably slower. Browser compatibility is handled too: HEVC, 10-bit, and MKV outputs get a temporary H.264 stream for preview, while Download always points at the original saved file. Repeated runs never overwrite - it scans all extensions and appended markers for the same basename. Every execution returns a fresh preview_id, so the browser doesn't keep showing last round's cached video.

The outputs and the pass-through trap

  • frames (IMAGE) - an echo of the input batch, only populated when pass_frames=true.
  • filename (STRING) - the actual saved path, for metadata or a text logger.

save_first_frame / save_last_frame write PNGs for convenience; note they do not create IMAGE outputs on their own. If you want the last frame as an IMAGE in the graph, you wire frames (with pass_frames=true) into the separate Last Frame node.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/Goldlionren/ComfyUI_JR_MiniMaxH3Node
<your-comfyui-python> -m pip install -r ComfyUI_JR_MiniMaxH3Node/requirements.txt

or ComfyUI Manager → search ComfyUI_JR_MiniMaxH3Node. The one required dependency is imageio-ffmpeg, which supplies an FFmpeg binary when none is on your PATH. A hard browser refresh after updating matters here - the preview UI is JavaScript.

Troubleshooting

  • Ultra-wide renders crawl - that's the software fallback doing its job. If delivery allows, switch codec to H.265 or AV1, or keep one side within the hardware encoder's width limit.
  • Preview shows H.264 but the file is different - expected: the preview is a compatibility stream; Download is the real file.
  • No filename coming out - check save_output is on, and that FFmpeg can actually be found (imageio-ffmpeg installed).
CategoryJR MiniMax H3/Video

Inputs (18)

NameTypeDefaultDescription
imagesIMAGE
frame_rateFLOAT24.000.1–240
codecCOMBOAuto5 options: Auto, AV1, VP9, H.265 (HEVC), H.264
containerCOMBOAuto6 options: Auto, WebM, MKV, MP4, Animated WebP, Animated AVIF
bit_depthCOMBOAuto3 options: Auto, 8-bit, 10-bit
qualityINT200–51
log_levelCOMBOStandard2 options: Standard, Verbose
pingpongBOOLEANfalse
save_metadataBOOLEANtrue
filename_prefixSTRINGvideo/%date:yyyy-MM-dd%/%date:hhmmss%
save_outputBOOLEANtrue
pass_framesBOOLEANfalse
crop_to_audioBOOLEANfalse
audio_codecCOMBOAuto4 options: Auto, AAC, Opus, MP3
audio_bitrateCOMBO192k7 options: 64k, 96k, 128k, 160k, 192k, 256k, +1
save_first_frameBOOLEANfalse
save_last_frameBOOLEANfalse
audiooptAUDIO

Outputs (2)

NameTypeDescription
framesIMAGE
filenameSTRING