Load Video
Pulling a local file into a Faceless pipeline
- video
The standard entry point for a video already sitting on your machine - upload it once through the node, pick it from the dropdown, and it's ready to feed into any of this pack's swap, restore, background-removal, or merge nodes. If your source clip is local, this is where every Faceless video pipeline starts.
What it's actually doing
This node's real job isn't just "load a file" - it's converting a video into FACELESS_VIDEO, the custom type every other video node in this pack expects. That type doesn't interoperate with other packs' video types or with ComfyUI's core IMAGE batches directly, so this conversion step (or its URL-based sibling) is mandatory before anything downstream in this pack will accept your clip.
Inputs and outputs
video- a dropdown populated from files you've uploaded, the same upload-then-select pattern as ComfyUI's built-in image loader.extract_frames(defaulttrue) - whether the node decodes frames up front. The schema doesn't expose more detail than the flag itself, so leave it at the default unless you have a specific reason to change it.trim_frame_start/trim_frame_end(default-1for both, meaning no trim - process the full clip) - lets you work on a slice of a longer video, say frames 100 through 300, without cutting the source file yourself first. Genuinely useful for testing a pipeline on a few seconds before committing to the whole clip.
Output: a single video (FACELESS_VIDEO).
Installing it
Manager: search Faceless Node for ComfyUI. By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/jeffy5/comfyui-faceless-node
pip install -r requirements.txt
No model download needed for this node - it's I/O, not a machine-learning pass. You'll need the rest of the pack's models in place for whatever you plug this into downstream (a face swap, a restoration step).
Where people get burned
Empty video dropdown. It only lists files you've uploaded through the node itself - if you dropped a file into ComfyUI's input/ folder some other way, you may need to refresh or re-upload through the widget for it to show up.
Type mismatch downstream. The output is FACELESS_VIDEO, which only talks to other Faceless nodes. It won't connect to a different pack's video-loading node or to core IMAGE inputs directly - use Load Images (Video) later in your graph if you need standard IMAGE frames for something outside this pack.
Testing on the full clip by default. Since trim defaults to -1/-1 (no trim), it's easy to accidentally run a full-length render while iterating on a workflow. Set trim_frame_start/trim_frame_end to a short window while you're still tuning things.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| video | COMBO | 0 options: | |
| extract_frames | BOOLEAN | true | — |
| trim_frame_start | INT | -1-1–999999 | — |
| trim_frame_end | INT | -1-1–999999 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | FACELESS_VIDEO | — |