Nodes/VideoSeal Watermarking/VideoSeal Model Loader
ComfyUI Node

VideoSeal Model Loader

Every VideoSeal workflow starts here — and the first run pays a 500 MB tax

By jc2shile·Created 2 months ago·Updated 2 months ago· 1
VideoSeal Model Loader
    • model
    • nbits
    model_namevideoseal
    deviceauto

    Every VideoSeal workflow starts here

    No watermarking in this pack happens without passing through this node first. It's the model loader for ComfyUI-VideoSeal, the wrapper that brings Meta AI's VideoSeal family of watermark models into ComfyUI - and it's also where the pack's only real surprises live, because the first time you use it, it quietly downloads a checkpoint from Meta's servers.

    VideoSeal is Meta's open-research answer to provenance: an encoder turns a binary message into an imperceptible perturbation pattern blended into your image or video, and a detector recovers that message later - even after compression or re-encoding, within limits. Meta ships the models; this pack wires them into the graph. If you've got content you need to prove ownership of, this is the only loader in town.

    What it loads

    The model_name dropdown offers the three models in the family:

    • videoseal (default) - the balanced, recommended default. 256-bit messages, ~500 MB download.
    • pixelseal - SOTA robustness/imperceptibility trade-off. Still 256 bits, but ~1.2 GB.
    • chunkyseal - 1024-bit messages, 4× the capacity, ~2 GB. Pick this when you need to embed a lot of data - a UUID plus metadata, say.

    How it works (the parts that bite)

    Before you see anything, the loader does three jobs:

    1. Resolves device - auto (default) means CUDA if it's there, otherwise CPU. The README is blunt: CPU "works but is extremely slow."
    2. Downloads the checkpoint from dl.fbaipublicfiles.com into ComfyUI/models/videoseal/ on first use, with progress printed to the ComfyUI console. On later loads the file is verified and re-downloaded if it's corrupt.
    3. Patches a real upstream bug - the videoseal pip package ships missing its config files, so the node writes them into the installed package on first load, then loads the model through videoseal's own config-based API.

    Models are cached per (model_name, device), so re-running a workflow doesn't reload the weights.

    The inputs and outputs you'll actually touch

    The two inputs - model_name and device - are both dropdowns with sensible defaults, so a raw beginner can just leave them alone. The outputs are where the useful stuff is: model (a VIDEOSEAL_MODEL) and nbits (INT).

    The nbits output is the sleeper feature. It's the message length for whatever model you loaded - 256 or 1024. Wire it into VideoSeal Message's nbits input and your message always matches the model, instead of hardcoding a number and hoping.

    Installing

    • ComfyUI Manager: search "VideoSeal" and install - dependencies handled for you.
    • Manual:
    cd ComfyUI/custom_nodes
    git clone https://github.com/jc2shile/ComfyUI-VideoSeal
    cd ComfyUI-VideoSeal
    pip install -r requirements.txt   # videoseal, omegaconf, einops
    

    Python ≥ 3.10 and PyTorch ≥ 2.3 (which ComfyUI already ships). Restart ComfyUI after installing.

    Troubleshooting

    • First load "hangs." It isn't hung - it's pulling 500 MB–2 GB from Meta's servers, with progress only on the console. Give it a minute or five.
    • Download fails. The README's own checklist: confirm you can actually reach dl.fbaipublicfiles.com. A blocked network or DNS issue is the most common failure, not a node bug.
    • Model fails to load with a config error. That's the pip packaging bug. The node patches it automatically on first load, but if it can't write into the installed package (permissions), it prints a warning and the load may fail. Fix: install videoseal from source instead of from pip.
    • Switched device and the model reloaded. Expected - the cache is keyed per device, so cuda and cpu are treated as separate loads.

    One honest caveat before you build a whole pipeline on this: detection accuracy degrades under heavy video compression - the README puts H.264 recovery at 60–80% versus ~90% uncompressed - so test your actual delivery format before you trust the watermark in production.

    CategoryVideoSeal

    Inputs (2)

    NameTypeDefaultDescription
    model_nameCOMBOvideoseal3 options: videoseal, pixelseal, chunkyseal
    deviceCOMBOauto3 options: auto, cuda, cpu

    Outputs (2)

    NameTypeDescription
    modelVIDEOSEAL_MODEL
    nbitsINT