Bria Video Background Removal
Video background removal, and the one thing that will trip you first
- image
Removing a background from a video frame-by-frame with a still-image remover is how you get flicker - the mask jitters between frames and the whole thing looks like a bad green screen. This node exists because that's a solved problem if you have a model that was actually trained for it: Bria's video background removal, running on Runware's servers, keeps the segmentation temporally stable so your subject doesn't shimmer. What you don't want to do is wire a VIDEO tensor into it, because - here's the first thing that'll trip you - the video input is a string, not a VIDEO socket.
The input that's actually a string
- video - required, type STRING. The tooltip says it plainly: video input as a UUID or URL. This is the pack's convention for video inputs (the README calls it out): Runware-native media is addressed by a UUID from a previous Runware generation, or a public URL to a hosted file. So if your video lives in ComfyUI as a VIDEO from another node, you need to get it to a URL first - or generate it with another Runware node, which hands you back something you can reference. It's the single most common "why is nothing happening" moment with these video nodes.
Then it's mostly output settings: outputFormat (MP4/WEBM/MOV, default MP4), outputQuality (20–99), ttl. And one escape hatch: advanced_json, a free-text field merged into the request - the tooltip notes it's there for providerSettings.bria.rgba, i.e. asking the API for an RGBA (transparency-preserving) result rather than a flattened one.
The output surprise
Here's the second thing people don't expect: the output is IMAGE, not VIDEO. This node's task type is removeBackground, which the pack classifies as an image-producing operation - so the result comes back as a batch of frames you can Preview, Save, or feed into anything that eats IMAGE tensors. If you need an actual .mp4 out of it, you'll re-combine the frames with a video node. That's a quirk of how the pack routes task types, and knowing it up front saves a confused five minutes.
Install and key
Same one-time setup for the whole pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart, add your Runware API key in Settings → Runware API key (or RUNWARE_API_KEY), and you're done - no model downloads, since segmentation happens on Runware's GPUs and the bill (and NSFW flag) print on the node after each run.
The honest take
This is a genuinely useful node if you're compositing people out of footage - the temporal stability is the whole point and it's what still-image RMBG can't give you. The friction is all in the string-input convention and the frames-not-video output. Get past those two and it's one of the more "it just works" nodes in the pack. Just don't expect to drag a local VIDEO wire into it, because that's not what's there.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| video | STRING | Video input (UUID or URL). | |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | MP4 | File format for the generated video. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
| advanced_jsonopt | STRING | Optional JSON merged into the request. For: providerSettings.bria.rgba |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |