VACE Clip Collector
All your clips in one place, nothing saved to disk
- videos
- clips
- fps
- clip_count
If you've ever joined two Wan clips with VACE, you know the annoying half of it isn't the generation - it's the bookkeeping. Load every clip, turn it into frames, keep track of which FPS each one runs at, check they're the same resolution. Do that for five clips and your graph looks like a plate of spaghetti before a single seam gets generated. VACE Clip Collector is this pack's answer: the front door that takes a pile of native Comfy VIDEO objects, pulls their frame batches into memory, validates that they actually belong together, and hands you one tidy clip list to loop over.
It's also the node the author wants you to use. The README is explicit that this is the preferred front-end, with the older VACEClipList3 kept around only as a prototype/helper.
How it works
The videos input is an autogrow input: you plug in between 2 and 20 native Comfy videos and it expands to fit. Behind the scenes the node calls video.get_components() on each one to extract the IMAGE frame batch and the frame rate, then runs two hard checks:
- Shared resolution and channels - every clip must be the same
[H, W, C]shape. - Shared FPS - a 24fps clip meeting a 30fps clip is an immediate error, not a warning.
It has to be strict, because a VACE seam can't repair a resolution or frame-rate mismatch - you'd be asking the model to bridge two different worlds. Fail one check and you get a ValueError naming the offending video (video_3=... vs video_1=...), so you know exactly which clip to fix or re-encode before rerunning.
Inputs and outputs that matter
You'll actually touch two things: the videos input (feed it everything), and the debug toggle (default false) which prints each clip's frame count and shape to the console when you're diagnosing a mismatch. That's it - no FPS fields, no resolution fields, because the node reads all of that from the videos themselves.
The three outputs are what the rest of the pack consumes:
clips- the orderedIMAGElist, list-typed, so it plugs straight intoVACE Clip Loop Start.fps- the validated shared FPS, oneFLOAT.clip_count- how many clips made it through, handy for sanity-checking your wiring.
Installing it
This ships in the comfy-vace-automation pack, which has no extra pip dependencies - torch comes from the ComfyUI environment. Install the whole pack once:
cd ComfyUI/custom_nodes
git clone https://github.com/EnviralDesign/comfy-vace-automation
Then restart ComfyUI. Or use ComfyUI Manager and search "comfy-vace-automation".
When it bites you
- Fewer than two videos is a hard error - a single clip has no seam to make.
- Resolution or FPS mismatch errors are the most common failure; the message tells you which clip, so fix that one.
- This node (like the rest of the pack) expects a reasonably modern ComfyUI, since it relies on native
VIDEOobjects and the newercomfy_api.latestplumbing. If your ComfyUI is old enough that you can't even load a video, update before blaming the node.
One tip: since everything stays in memory, this is the "no intermediate files" path - you never write a stitched-together partial video to disk between seams, which is exactly the workflow this pack is built around. Feed it the clips, let the loop do the rest.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| debug | BOOLEAN | false | — |
| videos | COMFY_AUTOGROW_V3 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| clips | IMAGE | — |
| fps | FLOAT | — |
| clip_count | INT | — |