Nodes/Simple Video Effects/Video Image Overlay
ComfyUI Node

Video Image Overlay

Stamp a logo PNG onto a video in one step

By scofano·Created 10 months ago·Updated 20 days ago· 0
Video Image Overlay
    • output_video_path
    overlay_image_path
    video_path
    suffix_overlay
    delete_originalfalse
    use_gpufalse

    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.mp4myvideo_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 _logo and get myvideo_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.

    CategorySimple Video Effects/Video Processing

    Inputs (5)

    NameTypeDefaultDescription
    overlay_image_pathSTRING
    video_pathSTRING
    suffixSTRING_overlay
    delete_originalBOOLEANfalse
    use_gpuoptBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    output_video_pathSTRING