Nodes/ComfyUI-BFSNodes/Frame Ranged Face Loader
ComfyUI Node

Frame Ranged Face Loader

Slice a frame range into a FACE_SEQUENCE

By alisson-anjos·Created 5 months ago·Updated 10 days ago· 100
Frame Ranged Face Loader
  • image
  • face_sequence
frame_start0
frame_end-1

This is the entry point into a small family of nodes this pack ships around a custom FACE_SEQUENCE type - a wrapper that carries not just images but the frame range they belong to. FrameRangedFaceLoader is where that type gets created: give it an image batch and a frame range, and it hands back a FACE_SEQUENCE other nodes in this pack (FaceSequenceBatch, ReservedRegionFrameComposer) know how to consume.

Why bother with a dedicated type instead of just passing IMAGE around? Because a face composite job - like ReservedRegionFrameComposer, which stacks face crops into a reserved strip of a video frame - needs to know which frame each face corresponds to, not just the pixels. A bare IMAGE batch loses that. A FACE_SEQUENCE keeps it.

Inputs

image - your source batch, presumably a sequence of face crops or a full video's frames that you're about to sub-select from. frame_start (default 0) and frame_end (default -1, meaning "to the end" - the standard Python-style convention) define the slice. There's nothing in the schema suggesting automatic face detection or cropping here - the name is "Frame Ranged," not "Face Detected," so this node's job is selecting a range, not finding faces within a frame. If your input images aren't already face crops, expect this node to pass through whatever's actually in that range, faces or not.

Output: face_sequence, typed FACE_SEQUENCE, ready to feed into FaceSequenceBatch (to combine with another sequence) or straight into ReservedRegionFrameComposer.

Installing it

Search "ComfyUI-BFSNodes" in ComfyUI Manager, or install by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/alisson-anjos/ComfyUI-BFSNodes.git
cd ComfyUI-BFSNodes
pip install -r requirements.txt

Restart ComfyUI. No model or LoRA needed - this is pure sequence bookkeeping, not a generative node, so it'll work regardless of what produced your source images.

How this fits together

Think of this as step one of a three-node pipeline documented in this pack: load a ranged sequence with this node, optionally merge two sequences together with FaceSequenceBatch if you're combining face sets from different sources or time ranges, then hand the result to ReservedRegionFrameComposer to actually composite the faces into a reserved region of your output frames. Used on its own, this node doesn't do much visually interesting - its value is entirely in producing the typed FACE_SEQUENCE object the rest of the pipeline expects.

Where it can go wrong

frame_end defaulting to -1 is convenient but easy to forget about if you're chaining this into a workflow where you actually meant to cap the range - double-check it explicitly rather than assuming it inherited a sensible bound from elsewhere in your graph. And since there's no face-detection step here, if your ReservedRegionFrameComposer output looks like it's compositing the wrong content (a shoulder, a background element, whatever happened to be at that frame range), the fix is upstream of this node - crop your image input to actual faces before it ever reaches this loader, not after.

Categoryvideo/composition

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
frame_startINT00–999999
frame_endINT-1-1–999999

Outputs (1)

NameTypeDescription
face_sequenceFACE_SEQUENCE