VideoSeal Model Loader
Every VideoSeal workflow starts here — and the first run pays a 500 MB tax
- model
- nbits
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:
- Resolves
device-auto(default) means CUDA if it's there, otherwise CPU. The README is blunt: CPU "works but is extremely slow." - Downloads the checkpoint from
dl.fbaipublicfiles.comintoComfyUI/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. - Patches a real upstream bug - the
videosealpip 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
videosealfrom source instead of from pip. - Switched device and the model reloaded. Expected - the cache is keyed per device, so
cudaandcpuare 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.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | videoseal | 3 options: videoseal, pixelseal, chunkyseal |
| device | COMBO | auto | 3 options: auto, cuda, cpu |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | VIDEOSEAL_MODEL | — |
| nbits | INT | — |