MiniMax H3 Skin Finish Video Finalize / 原音频封装 (Advanced)
The only Skin Finish node that re-encodes your video without touching the audio
- source_video
- processed_frames
- video
- saved_path
- report_json
All the Skin Finish nodes work on IMAGE frames. That's fine for review, but a movie has a soundtrack, and the pack's whole audio-integrity posture is "the picture finish must not touch the audio." MiniMaxH3SkinFinishVideoFinalizeT8Advanced is the node that finally makes it a real video: it takes your reviewed full-length frames plus the untrimmed file-backed source VIDEO, re-encodes the picture frame by frame, and copies the original compressed audio packets through unchanged, SHA-256 verified.
The key word is "untrimmed." This node expects the exact file the rest of your pipeline decoded from - if you've trimmed, rotated, cropped, or re-encoded the source, it fails closed. It also rejects HDR/10-bit, unknown codecs, and any geometry or packet drift. That strictness is the feature: it will refuse rather than hand you a subtly corrupted file.
How it works
Inputs: source_video (the file-backed VIDEO), processed_frames (your accepted skin-finish frames), filename_prefix (default MiniMaxH3/SkinFinish/skin_finish), crf (18) for the H.264 encode, and accept_candidate. While accept_candidate is false, it returns the exact source VIDEO and writes nothing - this is the final gate, and it's off by default.
When you flip it, the node encodes the picture with single-threaded libx264 and, before publishing, runs a strict single-threaded FFmpeg decode (-xerror -err_detect explode) to prove the file is valid. The original compressed audio packet payloads are copied package-by-package and SHA-256 verified against the source. Outputs are video, saved_path, and report_json.
Why the paranoid decode? The pack's own testing hit a real bug where Windows' default multithreaded PyAV/libx264 produced candidates with the right frame count but a corrupt stream. The fix that shipped is exactly this: single thread + strict decode before atomic publish. So that threads=1 isn't a performance choice, it's a correctness one.
Requirements
- FFmpeg on PATH. This is a hard dependency for file-level save/finalize nodes in this pack. Standard ComfyUI installs usually have it; if it's missing, an explicit accept fails closed with a clear error rather than writing a junk file.
- An untrimmed, 8-bit SDR, file-backed VIDEO. HDR, 10-bit, rotated, cropped or re-encoded sources are refused.
Where it fits
The multi-person chain ends here: examples/workflows/17-skin-finish/2026-08-24_H3_Skin_Finish_MultiPerson_Video_Finalize_Advanced_EXP.json. SAM tracks once, the Multi-Person node finishes, Texture Guard hardens, you review with Preview/Audit, and only then does this node re-encode and mux. Note the audio here comes from the source VIDEO itself - you don't wire an AUDIO object into this node.
Install
Pack standard - Manager search "MiniMax H3 Audio T8", or
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8
then restart ComfyUI. No extra pip packages. If you're coming from the image-only Skin Finish nodes, this is the step that turns a reviewed candidate into a deliverable - and the reason the review happened at all.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| source_video | VIDEO | — | |
| processed_frames | IMAGE | — | |
| filename_prefix | STRING | MiniMaxH3/SkinFinish/skin_finish | — |
| crf | FLOAT | 180–51 | — |
| accept_candidate | BOOLEAN | false | False returns the exact source VIDEO and writes nothing. Enable only after reviewing the Skin Finish candidate. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| saved_path | STRING | — |
| report_json | STRING | — |