Bria Video Erase Elements
Erase people and objects from video — with a mask, not a hope
- result_video_url
Bria Video Erase Elements is the edit node at the end of Bria's video-mask pipeline: give it a video and a mask, and it removes the masked thing from every frame and in-paints the hole with plausible surrounding content. Pedestrians vanish from a street scene, a logo disappears off a shirt, an object gets lifted out while the camera keeps moving. Locally, that's a genuinely miserable job - per-frame inpainting plus temporal consistency is why video editing is the least settled corner of this whole ecosystem. Bria's hosted model does it for you in exchange for an API token and a per-request fee.
The important design choice: this node only erases what a mask tells it to. It doesn't accept a prompt describing what to remove - the targeting happens upstream. The natural flow is the pack's own example workflow: VideoMaskByPromptNode or VideoMaskByKeyPointsNode produces a mask_url, and that string feeds straight into this node's mask_url input. If you skip the mask step and leave mask_url empty, you get nothing useful - the eraser has no idea what to kill. Build the mask first, preview it, then spend the erase call.
What you set
api_key- required. The prefilledBRIA_API_TOKENis a placeholder; the node hard-refuses to run on it.video_url- required. Hostedhttp(s)URL or a local file path (tooltip: "URL of video to process (provide either frames or video_url)"). Local paths are uploaded to Bria's S3 automatically via a presigned URL, so you can chainLoadVideoFramesNodestraight in.mask_url- optional, but really the point of the node. A URL to a mask video, i.e. exactly what the two mask nodes output.output_container_and_codec- nine combos, defaultmp4_h264. Pickwebm_vp9if you need a lossless-ish pipeline,mov_proresksfor editing workflows,giffor quick looks.preserve_audio- default true; flip off if the source audio is garbage and you want a clean export.
The single output is result_video_url - a STRING URL to the finished video. It's not a video tensor, so you can't chain it into VHS-style nodes; to see the result you run it into PreviewVideoURLNode (same pack), which downloads and previews it in the ComfyUI UI.
Installing
Standard for the pack. ComfyUI Manager → search "BRIA API", or:
cd path_to_comfyui/custom_nodes
git clone https://github.com/Bria-AI/ComfyUI-BRIA-API
Restart, add your token from platform.bria.ai. No models, no heavy dependencies - the pack is requests plus what ComfyUI already has. Mechanically the node is async: it POSTs to Bria's /v2/video/edit/erase, gets back a status_url + request_id, polls every 5 seconds (up to an hour), and returns the result URL when the status flips to COMPLETED. A long or high-res video can sit in "waiting" for a real while; the console prints status as it polls, which is the only progress bar you'll get.
Where it bites
Three things, in order of how often they bite. First, cost: erasing is a heavier hosted job than masking, so it's the pricier call in the pair, and a bad mask means a wasted (paid) erase attempt. Preview the mask before you run this. Second, mask quality is everything - a sloppy mask erases a wobbly blob and the inpaint fills it with whatever it pleases, which can look like a shimmering hallucination on motion. If the mask drifts, the erase drifts with it. Third, the result is a remote URL with an expiry, not a file on disk - download what you need from the preview while it's live, and don't stash the URL in a project you'll reopen next month.
Is it worth it versus doing it locally? If you've ever watched 400 frames of a manually masked video render at 20 seconds per frame, you know why a flat fee beats the time. The license is clean for commercial work, too - Bria's models are trained on licensed data, which is the whole reason its API gets mandated in some corporate pipelines. It's a "pay to skip the grind" node, and honestly, for one-off client edits, that trade is usually the right one.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | BRIA_API_TOKEN | — |
| video_url | STRING | URL of video to process (provide either frames or video_url) | |
| mask_urlopt | STRING | URL of mask video (optional) | |
| output_container_and_codecopt | COMBO | mp4_h264 | 9 options: mp4_h264, mp4_h265, webm_vp9, mov_h265, mov_proresks, mkv_h264, +3 |
| preserve_audioopt | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| result_video_url | STRING | — |