Nodes/ComfyUI-NetflixVoid/VOID Export Black Mask
ComfyUI Node

VOID Export Black Mask

The boring node that makes the whole VOID workflow agree on what's being removed

By jaskirat05·Created 5 months ago·Updated 5 months ago· 0
VOID Export Black Mask
  • images
  • mask
  • black_mask_video
  • black_mask_mask
  • first_frame
threshold0.50

This is the gateway node for the whole VOID video-removal workflow, and it exists because VOID is picky about mask conventions. Almost every segmentation node you'll feed it - SAM2 video segmentation, a detailer, whatever you used to outline the thing you want gone - emits masks where the object is white (1.0) and the background is black (0.0). VOID's Stage 1 expects the exact opposite: object = black, background = white. Get that backwards and every downstream stage quietly behaves as if you wanted to remove the entire background, and you'll burn an hour chasing it. This node's whole job is making the handoff safe.

It's part of ComfyUI-NetflixVoid, jaskirat05's ComfyUI port of the Netflix VOID video object removal framework (the CogVideoX-5B + segmentation + VLM thing that hit r/StableDiffusion's weekly roundup in April 2026). Five stages: black mask, VLM analysis, grey mask, quadmask, then the PQ5 sampler. This is stage one.

How it works

Dead simple under the hood. It thresholds your mask at a threshold value (default 0.5), snaps it to pure binary, then inverts it: 1.0 - binary. Black pixels stay where the object was, everything else goes white. It also validates that your video and mask have the same number of frames, and errors loudly with a clear message if they don't - which is the good kind of failure, because frame-count mismatches are the classic silent-killer in per-frame video work.

The inputs and outputs that matter

  • images (IMAGE) - your video as a frame batch, straight from a loader like VHS_LoadVideo.
  • mask (MASK) - one mask per frame, same frame count as images. Whatever you used to mark the object.
  • threshold (FLOAT, default 0.5) - where binary snapping happens. Only touch this if your mask is soft-edged and you're getting too much or too little bleed.

Outputs:

  • black_mask_video (IMAGE) - the inverted mask as a 3-channel video. This is the wire you feed into VOID Prepare VLM Analysis, VOID Build Grey Mask, and VOID Combine Quadmask.
  • black_mask_mask (MASK) - same thing as a proper mask tensor, if you want it for compositing elsewhere.
  • first_frame (IMAGE) - just the first frame of your input, handy for previewing without a separate load.

There are no knobs that matter beyond the threshold - this is a utility node, zero model loading, runs in milliseconds.

Install

Same as every node in the pack: ComfyUI Manager, search "ComfyUI-NetflixVoid", install, restart. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/jaskirat05/ComfyUI-NetflixVoid

then restart ComfyUI. The pack's requirements.txt is heavy (opencv, scikit-image, mediapy, decord, kornia, timm, tomesd, datasets...), so let the install run. Note the example workflow gets its mask from SAM2 video segmentation, and SAM2 itself is installed separately per Meta's instructions - the pack doesn't bundle it.

Common issues

  • "Frame count mismatch" error - your mask batch has a different number of frames than your video. If your SAM2 segmentation ran on a subset of frames or with a different fps, that's your culprit; match them up before this node.
  • Everything comes out inverted - if your upstream segmentation already emits object-black/background-white, you'd be double-inverting. Check a preview; if the removed object ends up white, that's the sign.
CategoryVOID

Inputs (3)

NameTypeDefaultDescription
imagesIMAGE
maskMASK
thresholdFLOAT0.500–1

Outputs (3)

NameTypeDescription
black_mask_videoIMAGE
black_mask_maskMASK
first_frameIMAGE