WAN VACE Auto Joiner - Finalize
Stitch, smooth, and keep the audio
- loop_end_trigger
- vace_images
- batch_images
- audio
- frame_rate
- status
- is_complete
The other two nodes in this pack do the unglamorous assembly-line work. This one is the payoff. After your For Loop has run VACE across every clip boundary, the Finalize node takes all the accumulated frames, sews them into one continuous sequence, smooths out the seams, and hands you a ready-to-encode batch with its audio attached. It's the difference between "a pile of VACE outputs" and "a video."
What it actually does
It runs once, after the loop. In order:
- It reads the last transition's VACE output (from the disk file the Save node wrote, or from its own
vace_imagesinput) and tacks on the remaining frames of the final clip. - It loads every frame from the temp folder into one long sequence.
- Temporal color smoothing. This is the v2.0.0 headline feature. VACE re-diffuses the whole 33-frame transition window, not just the masked region, so seams can come out a few points brighter or warmer than the source clips - visible "pulses" on long joins. The node computes the mean R, G, and B values across each transition region, builds smooth target curves (Gaussian smoothing blended 50/50 with linear interpolation through the seam), and applies per-frame, per-channel correction factors. All of it is calculated dynamically from your actual frames - no hardcoded "add 3 brightness" hack.
- Audio. If
transfer_audiois on and ffmpeg is on your PATH, it extracts audio from every source clip and concatenates it into one track. If any clip has no audio, ffmpeg's missing, or you turned it off, you still get a valid silent track - theaudiooutput is always connected, so Video Combine never errors.
The inputs that matter
loop_end_trigger- connect this directly to For Loop End'svalue1output. That's the dependency that keeps Finalize from running before the loop is done. Get this wrong and it fires early or not at all.directoryandfile_prefix- must match the Auto Joiner node, since it finds the state folder there.smooth_transitions(on by default) - flip it off if you want the raw VACE output, seams and all.smooth_window(12, range 1-30) andblend_region(25, range 10-50) - the two knobs for stubborn seams.smooth_windowis the Gaussian sigma: higher = smoother.blend_regionis how many frames of context on each side of the seam get included. If pulses survive, the README's recipe is window 15-20 with region 30-40.transfer_audio(on by default) - off means you handle audio yourself.cleanup(off by default) - when true, it deletes the temp folder after outputting. Leave it off until you've verified the result, because that folder is your only recovery copy mid-workflow.
Wiring the output
The outputs were designed to drop straight into Video Helper Suite's Video Combine:
Finalize ──batch_images──► Video Combine (images)
├──audio─────────► Video Combine (audio)
└──frame_rate────► Video Combine (frame_rate)
frame_rate is the FLOAT you'd otherwise set by hand, read from the source clips. status and is_complete are debug; is_complete goes true on the final run.
Troubleshooting
- Still see brightness/color pulses - real users report this even on v2.0.0. Bump
smooth_windowtoward 20 andblend_regiontoward 40 before you blame the pack; the author's own suggestion is to make sure you're on the latest version via a fresh manual install, since Manager's cached copy can lag. - No audio in the output - check the console for
[WAN VACE Auto Joiner]messages, confirmffmpeg -versionworks, and confirm the source clips actually have audio tracks. The node degrades gracefully to silence either way. - Finalize runs too early - it's inside the loop, or not connected to For Loop End's
value1. It belongs after the loop, nothing else. - "No VACE output found" - the Save node didn't run after the last VACE pass, so there's nothing to stitch.
Install
Same pack, same recipe as the other two nodes: Manager search "Wan Vace Auto Joiner", or cd ComfyUI/custom_nodes && git clone https://github.com/Rhovanx/wan_vace_auto_joiner.git then restart. No model downloads - it leans on your existing VACE setup. If you want the audio path, make sure ffmpeg is on your PATH; pip install scipy tightens the smoothing slightly but it has a numpy fallback baked in. Install ComfyUI-Easy-Use for the For Loop nodes, and you'll need VideoHelperSuite (VHS) for the Video Combine on the other end.
The pack flew under the radar - its v2.0 release thread is nearly empty - but the people who actually ran it report genuinely good results. If you're already doing multi-clip Wan or LTX-2 work with VACE, this is the fastest way to stop babysitting the seam.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| loop_end_trigger | * | Connect DIRECTLY to For Loop End's value1 output | |
| directory | STRING | Directory containing the video files (same as Auto Joiner) | |
| file_prefix | STRING | clip | Prefix of the video files (same as Auto Joiner) |
| cleanup | BOOLEAN | false | Delete temp folder after outputting final video |
| vace_imagesopt | IMAGE | Optional: Final VACE output (if not provided, reads from disk) | |
| smooth_transitionsopt | BOOLEAN | true | Apply temporal color smoothing for seamless transitions |
| smooth_windowopt | INT | 121–30 | Smoothing strength (higher = smoother, default 12) |
| blend_regionopt | INT | 2510–50 | Frames before/after VACE to include in smoothing (default 25) |
| transfer_audioopt | BOOLEAN | true | Transfer audio from original clips (requires ffmpeg) |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| batch_images | IMAGE | — |
| audio | AUDIO | — |
| frame_rate | FLOAT | — |
| status | STRING | — |
| is_complete | BOOLEAN | — |