Multi Image Inserter
The node this pack is named after — stamp stills into a video at exact frames
- frames
- images
- background_frames
- processed_frames
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 (anIMAGEbatch). This is the video you're stamping into.images- the stills to insert. Feed it thelistoutput ofImage 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;autois 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_indicesis 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
tensormode at wildly different sizes, they get resized to match the frame stack; acover_fillprep 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_widthlow 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.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| frames | IMAGE | — | |
| images | IMAGE | — | |
| frame_indices | STRING | 10,20,30 | — |
| fade_width | INT | 20–20 | — |
| min_opacity | FLOAT | 0.00–1 | — |
| blend_mode | COMBO | auto | 3 options: auto, additive, override |
| background_framesopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| processed_frames | IMAGE | — |