Combine Images
Turns the raw video tensor into a four-panel result sheet
- video_tensor
- final_images
CombineImages is the pack's output stage: it takes the raw video_tensor from A2VideoGenerator and turns it into the images you actually look at. And there's a quirk you need to know up front - it doesn't give you a plain video. For every frame it builds a four-panel contact sheet: subject reference | object reference | background reference | the generated frame, all side by side on one wide white canvas. That layout is SkyReels-A2's intended "show the composition" view, so you can check at a glance whether the person, the thing, and the scene actually came together.
How it works
The node reads your refer_image_paths a second time and rebuilds the three references resized to your height/width, then for each generated frame it pastes reference 1, reference 2, reference 3, and the frame itself into a canvas that's width * 4 wide. One subtlety in the code: it slices the first 12 frames off the generated video before compositing. Those leading frames are the conditioning preamble the model used, and they're throwaway - so if you asked for 81 frames, you get about 69 back, which is why your output is shorter than your num_frames setting.
Inputs that matter
- video_tensor - the output of A2VideoGenerator. Nothing else feeds it.
- refer_image_paths - must be the same list you gave ReferenceImages, in the same order. The code indexes positions 0, 1 and 2 directly, so you need at least three paths and they need to match, or the sheet will paste the wrong thing next to your video. Same Python-list-literal syntax as ReferenceImages: brackets and quotes required.
- width / height - must match what you generated at. If they don't, the paste will misalign and you'll get a garbled sheet.
Output
One output, final_images (IMAGE). It feeds the pack's SaveVideo node (which writes an mp4 at your chosen fps - the default 15 makes the ~69 frames come out to roughly 4.5 seconds), or any other node that can consume an image sequence.
Installing it
Same pack, same story as the rest: install Yuan-ManX/ComfyUI-SkyReels-A2 via ComfyUI Manager (search "SkyReels") or
cd ComfyUI/custom_nodes
git clone https://github.com/Yuan-ManX/ComfyUI-SkyReels-A2.git
cd ComfyUI-SkyReels-A2
pip install -r requirements.txt
Restart after installing. The pack needs the model and the reference files on disk, but this node itself is just PIL compositing - it runs even before you've got a pipeline loaded.
Common issues
The two ways people get burned: reusing the default ['assets/human.png', ...] paths (they don't exist unless you cloned the repo's assets), and changing the reference list here so it no longer matches what was actually generated - the sheet will proudly show you references that have nothing to do with your video. And if you wanted a clean, watermark-free clip rather than the four-panel layout, this node is not that: it always builds the composite, so either crop the right third of the output or route the video tensor to a different writer if you have one that can consume raw tensors.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| video_tensor | TENSOR | — | |
| refer_image_paths | STRING | ['assets/human.png', 'assets/thing.png', 'assets/env.png'] | — |
| width | INT | 832 | — |
| height | INT | 480 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| final_images | IMAGE | — |