Nodes/ComfyUI-VideoBlender/Video Blend Stack Advanced (YC)
ComfyUI Node

Video Blend Stack Advanced (YC)

The ComfyUI compositor for real stacks

By yichengup·Created 2 years ago·Updated 2 years ago· 37
Video Blend Stack Advanced (YC)
  • 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
canvas_width1024
canvas_height576
background_modefirst_frame
background_color#000000

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_N needs its matching layer_info_N from a VideoBlendLayer.
  • 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_5 with no layer_info_5 won'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_frame or color. Defaults to first_frame.
  • background_color - hex string (default #000000), only relevant in color mode.

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.

CategoryVideoBlender

Inputs (20)

NameTypeDefaultDescription
frames_1IMAGE
frames_2IMAGE
layer_info_1LAYER_INFO
layer_info_2LAYER_INFO
canvas_widthINT10248–7680
canvas_heightINT5768–4320
background_modeCOMBOfirst_frame2 options: first_frame, color
background_colorSTRING#000000
frames_3optIMAGE
frames_4optIMAGE
frames_5optIMAGE
frames_6optIMAGE
frames_7optIMAGE
frames_8optIMAGE
layer_info_3optLAYER_INFO
layer_info_4optLAYER_INFO
layer_info_5optLAYER_INFO
layer_info_6optLAYER_INFO
layer_info_7optLAYER_INFO
layer_info_8optLAYER_INFO

Outputs (1)

NameTypeDescription
IMAGEIMAGE