Video Blend Stack Advanced (YC)
The ComfyUI compositor for real stacks
- frames_1
- frames_2
- layer_info_1
- layer_info_2
- frames_3
- frames_4
- frames_5
- frames_6
- frames_7
- frames_8
- layer_info_3
- layer_info_4
- layer_info_5
- layer_info_6
- layer_info_7
- layer_info_8
- IMAGE
The plain VideoBlendStack handles one overlay. VideoBlendStackAdvanced is what the pack's author added in v1.1.0 for the moment you need a real stack: up to eight frame sequences, each with its own VideoBlendLayer-produced LAYER_INFO, all composited in a single node. This is the one you reach for with picture-in-picture setups, multi-clip overlays, or compositing several generated shots onto one background - where chaining six plain Stacks together would be a mess of purple wires.
It's still a small-pack feature with small-pack documentation, so the honest framing is: if you're doing two-clip blends, use VideoBlendStack - simpler, fewer inputs to stare at. Advanced earns its name only when layer count is your actual problem.
How it works
Same mechanism as the plain stack, scaled up. Each of the two required and up to six optional frame sequences gets blended in order with its matching LAYER_INFO - layer 1 is bottom-most, layer 8 sits on top, and the modes/opacities from each layer's info apply as it goes on. The blend math runs as GPU torch ops when CUDA is available, same as the rest of the pack. The one real addition is a background choice: instead of always filling a solid hex color like the plain Stack, you can set background_mode to first_frame, which uses the first frame of layer 1's clip as the backdrop. That's handy when you want a real image behind your layers rather than a flat fill.
Two default values tell you what this node is aimed at. Canvas defaults here are 1024x576 with steps of 8 - that's 576p 16:9, in the neighborhood of what local video generation models actually render at, and the 8-step hint says this node expects resolution-aligned dimensions. If you're compositing AI-generated clips, those defaults are a reasonable place to start.
The inputs that matter
- frames_1 / layer_info_1 and frames_2 / layer_info_2 - required. These are your bottom two layers; each
frames_Nneeds its matchinglayer_info_Nfrom aVideoBlendLayer. - frames_3 through frames_8 / layer_info_3 through 8 - optional. Wire in as many as you need; leave the rest unconnected. Every layer needs a frame sequence and its info bundle, so a
frames_5with nolayer_info_5won't composite. - canvas_width / canvas_height - default 1024x576, min 8, step 8. Everything is resized to this, so all your inputs get stretched to match.
- background_mode -
first_frameorcolor. Defaults tofirst_frame. - background_color - hex string (default
#000000), only relevant incolormode.
The single output is IMAGE - the composited frame sequence, ready for VHS_VideoCombine.
Installing it
Standard for this pack - it's all one repo:
cd ComfyUI/custom_nodes
git clone https://github.com/yichengup/ComfyUI-VideoBlender.git
cd ComfyUI-VideoBlender
pip install -r requirements.txt
or ComfyUI Manager → search "ComfyUI-VideoBlender" → install → restart. Dependencies are opencv-python, numpy, torch, pillow, moviepy; most are already in your ComfyUI, moviepy is the one that might not be.
The gotchas
Because every layer rides on a LAYER_INFO from VideoBlendLayer, remember that each of your eight (or two, or five) source clips needs its own layer node upstream - the Advanced node doesn't invent blend settings, it consumes them. Frame counts should match across all wired layers; a shorter clip makes the loop break. And keep an eye on memory: eight full-res frame tensors plus the canvas is exactly the situation the pack README's "compress large videos first" warning is aimed at. Start with 576p, not 8K.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| frames_1 | IMAGE | — | |
| frames_2 | IMAGE | — | |
| layer_info_1 | LAYER_INFO | — | |
| layer_info_2 | LAYER_INFO | — | |
| canvas_width | INT | 10248–7680 | — |
| canvas_height | INT | 5768–4320 | — |
| background_mode | COMBO | first_frame | 2 options: first_frame, color |
| background_color | STRING | #000000 | — |
| frames_3opt | IMAGE | — | |
| frames_4opt | IMAGE | — | |
| frames_5opt | IMAGE | — | |
| frames_6opt | IMAGE | — | |
| frames_7opt | IMAGE | — | |
| frames_8opt | IMAGE | — | |
| layer_info_3opt | LAYER_INFO | — | |
| layer_info_4opt | LAYER_INFO | — | |
| layer_info_5opt | LAYER_INFO | — | |
| layer_info_6opt | LAYER_INFO | — | |
| layer_info_7opt | LAYER_INFO | — | |
| layer_info_8opt | LAYER_INFO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |