Video Image Overlay
Stamp a logo PNG onto a video in one step
- output_video_path
The classic job every video pipeline ends up needing: watermark, logo, channel bug, timestamp, or just a PNG composited over footage. Video Image Overlay does exactly one thing - takes a video file and a PNG with transparency, composites the PNG on top for the whole duration, and writes a new video in the same folder. That's it. There's no tensor pipeline, no VHS detour, no extra pass through your generation graph.
It's from scofano's Simple Video Effects pack, the collection of lightweight file-based video utilities. This is the static single-image version of the overlay family: the same pack also has a Video Overlay (Video Path) for blending one video onto another, and a Video Overlay (File Input) for animating a folder of PNGs across a video. If all you need is "put this one image on this one video," this is the one you grab.
How it works
It's a thin wrapper around one ffmpeg command. The filter graph is almost insultingly small:
[0:v][1:v]overlay=0:0:format=auto[vout]
The video and the PNG are both fed to ffmpeg, the image is composited at pixel (0, 0), and any audio track on the video is carried over. Default output is H.264 (libx264); flip use_gpu on and it tries hevc_nvenc instead, with an automatic fallback to libx264 if the NVIDIA encode fails.
The output path is generated for you: same directory as the source video, myvideo.mp4 → myvideo_overlay.mp4. If that name already exists it appends _0001, _0002, and so on, so you can't accidentally clobber a previous result.
The inputs that matter
- overlay_image_path / video_path - full paths to both files. It validates both exist before doing anything.
- suffix - default
_overlay; controls the output filename. Set it to_logoand getmyvideo_logo.mp4. - delete_original - deletes the source video after processing. Useful for batch pipelines, terrifying by default. Leave it off.
- use_gpu - optional, defaults off. If you're re-encoding a long video, turning this on can be several times faster - but only if your ffmpeg has NVENC.
The single output is output_video_path, a STRING with the absolute path to the composited MP4.
Installing it
The standard pack install, no models involved:
cd ComfyUI/custom_nodes
git clone https://github.com/scofano/ComfyUI-Simple-video-effects
pip install -r requirements.txt
Restart ComfyUI, or just search "Simple Video Effects" in ComfyUI Manager and install it there. Requirements are ffmpeg-python, soundfile, numpy, Pillow and torch.
Where people get burned
The big one is right there in the README and easy to miss: no resizing, and the overlay anchors at the top-left. Your PNG is composited at its original size, positioned at (0,0). If your logo is 2048px wide and the video is 1080p, you get a logo that eats half the frame in the top-left corner. There's no position, no scale, no centering - pre-size your PNG before you drop it in, or this node will not do what you hoped.
Second, audio gets re-encoded to AAC rather than stream-copied. It's a minor quality nit on already-compressed audio, but it means this isn't the zero-loss tool the "overlay" framing implies - everything goes through one more encode.
And third, the same system-ffmpeg requirement as every node in this pack: it needs real ffmpeg on your PATH. pip install ffmpeg-python gives you bindings, not the binary. If the node errors with something about ffmpeg not found, install the actual ffmpeg and restart ComfyUI.
One light aside: because the output lands in the source video's folder rather than ComfyUI's output directory, it's one of the few nodes where you can find results by just opening the folder where your clip lives. Convenient, and a little unexpected the first time.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| overlay_image_path | STRING | — | |
| video_path | STRING | — | |
| suffix | STRING | _overlay | — |
| delete_original | BOOLEAN | false | — |
| use_gpuopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output_video_path | STRING | — |