ComfyUI Node

Multi Image Inserter

The node this pack is named after — stamp stills into a video at exact frames

By Yeq6X·Created 2 months ago·Updated 2 months ago· 1
Multi Image Inserter
  • frames
  • images
  • background_frames
  • processed_frames
frame_indices10,20,30
fade_width2
min_opacity0.0
blend_modeauto

The headline act. Multi Image Inserter takes a stack of frames and a stack of still images, and splices each image into the timeline at a frame position you specify - with automatic fade in/out and proper alpha handling. Logo stamps, title cards, cutaway images, meme text dropped over a clip: this is the node that does it inside ComfyUI instead of in a video editor. The pack is literally named after this mechanism - ComfyUI Image to Video Inserter by Yeq6X.

The intended pipeline, straight from the repo's example: build or load a frame stack (Create Blank Frames or a video loader), gather your stills with Image Batch Assembler (set to list output), feed both into this node, then re-encode with a video combine node. Everything else in the pack exists to serve that flow.

How it works

Under the hood, the core lives in the pack's insert_image_to_video.py. Each image gets a fade timeline: fade_width frames before and after its target frame, ramping opacity from min_opacity up to full and back down. When multiple images overlap on the same frame, the code computes blend weights - the calculate_blend_custom function keeps a background contribution so overlapping images mix instead of stacking opaque on top of each other. PNG alpha channels are respected, so transparent images composite naturally.

One honest gotcha: blend_mode offers auto, additive, and override, but in the shipped code all three currently route through the same blend routine (the source literally has a TODO where the other modes would diverge). So don't expect additive to actually add yet - for now it behaves like auto. auto is the real, working behavior; treat the other two as future promises.

Inputs that matter

  • frames - the base timeline (an IMAGE batch). This is the video you're stamping into.
  • images - the stills to insert. Feed it the list output of Image Batch Assembler (or a plain batch; the node splits batches itself).
  • frame_indices - the whole point. A comma-separated string of positions, e.g. "10,20,30", matched to the images in order. First image goes to frame 10, second to 20, and so on.
  • fade_width - frames of fade-in/out around each insertion, default 2, max 20. Zero = hard cut.
  • min_opacity - how transparent the fade dips to (0.0–1.0, default 0).
  • blend_mode - see above; auto is the one that works.
  • background_frames (optional) - a second frame stack to use as the composite background instead of the base frames. Handy for overlaying on a pre-rendered base.

The output is processed_frames (IMAGE) - your timeline with images baked in. Re-encode it (e.g. with Video Helper Suite's VHS_VideoCombine) to get the final file.

Installing it

Standard pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/Yeq6X/ComfyUI-image-to-video-inserter

then restart ComfyUI, or use ComfyUI Manager and search "Image to Video Inserter". No weights, no keys. The pack needs opencv-python - ComfyUI installs usually have it, but if the pack won't load, pip install opencv-python into the ComfyUI env is the fix.

Common issues

  • Nothing gets inserted - check frame_indices is valid integers and that there are enough images. The node pairs indices and images positionally, so the shorter one wins.
  • Images don't show - if your stills came out of the assembler in tensor mode at wildly different sizes, they get resized to match the frame stack; a cover_fill prep can avoid ugly letterboxing.
  • Output looks wrong and the node is silent - the inserter catches its own exceptions and returns the original frames untouched, so a failure looks like "nothing happened." Test with fade_width low and a single image before debugging a ten-image insert.

When to reach for it

Reach for this when you'd otherwise open a video editor just to drop a few stills at fixed timestamps - watermarking a render, building a text-card video from blank frames, inserting product shots into a demo clip. It's not a replacement for a proper editor on complex timelines, but for "these 3 images appear at these 3 moments," it's the entire workflow in one node.

CategoryVideo/Frames

Inputs (7)

NameTypeDefaultDescription
framesIMAGE
imagesIMAGE
frame_indicesSTRING10,20,30
fade_widthINT20–20
min_opacityFLOAT0.00–1
blend_modeCOMBOauto3 options: auto, additive, override
background_framesoptIMAGE

Outputs (1)

NameTypeDescription
processed_framesIMAGE