ComfyUI Node

Bria Video Background Removal

Video background removal, and the one thing that will trip you first

By Runware·Created 2 years ago·Updated about a month ago· 140
Bria Video Background Removal
    • image
    video
    ttlfalse
    ttl_value60
    outputFormatMP4
    outputQuality95
    advanced_json

    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.

    CategoryRunware/Image/bria

    Inputs (6)

    NameTypeDefaultDescription
    videoSTRINGVideo input (UUID or URL).
    ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
    ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
    outputFormatoptCOMBOMP4File format for the generated video.
    outputQualityoptINT9520–99Compression quality of the output. Higher values preserve quality but increase file size.
    advanced_jsonoptSTRINGOptional JSON merged into the request. For: providerSettings.bria.rgba

    Outputs (1)

    NameTypeDescription
    imageIMAGE