ControlFoley Video Loader
Get your clip into the graph
- controlfoley_video
- video_path
- video_output
ControlFoley Video Loader is the pack's front door for video. It takes a path to a clip, resolves it (relative to ComfyUI's input folder, or as an absolute path), shows you an inline preview, and hands the video to the rest of the graph in three flavors: the pack's own controlfoley_video type, a plain resolved path string, and a native ComfyUI VIDEO object you can chain into core video nodes.
Why it exists
The generate nodes can technically take video from three places - this loader's CONTROLFOLEY_VIDEO, a native VIDEO tensor from any ComfyUI video source, or an IMAGE batch. The loader's job is to make the first option painless: it reads the file once, measures its actual duration, and computes the duration that generation will actually use, which matters because ControlFoley caps everything at 30 seconds and lets the input video set the length.
Inputs and outputs
Inputs are refreshingly few:
video_path- defaults to the bundled demo clip (examples/generated/01_v2a_basic/v2a_video.mp4). You can drop your own file intoComfyUI/inputand give its path, or use an absolute path. If the file doesn't exist you get a cleanFileNotFoundErrorinstead of a cryptic downstream crash.duration- an upper limit for generation, default 8s, min 0.7s, max 30s. The tooltip says it plainly: the actual output follows the input video's length, up to 30s. This is a ceiling, not a forced length - a 5-second clip stays 5 seconds even if you set 20.
Three outputs: controlfoley_video (CONTROLFOLEY_VIDEO - the one you wire into ControlFoley Generate or the muxer), video_path (STRING, the resolved absolute path, handy if a later node needs the file on disk), and video_output (native VIDEO, for ComfyUI's own video nodes - VHS-style loaders, preview nodes, that ecosystem).
Small print
The node is marked as an output node, so it shows its inline preview in the UI. It's also IS_CHANGED-aware: it re-runs when the file's mtime or size changes, so editing a clip and hitting run doesn't get served a stale cached read. The duration passed downstream gets clamped against the real media duration, so you don't have to guess whether your 12-second clip will overrun the cap.
One practical gotcha from the workflow templates: the bundled demo paths resolve against the custom-node folder, which is fine for the demos but not how you'll want to work. Copy your real input into ComfyUI/input/assets (or anywhere under input) and point video_path there. Install the pack through ComfyUI Manager ("ControlFoley Official") or git clone into custom_nodes + pip install -r requirements.txt - install only genuinely-missing packages one at a time. And keep in mind the whole pipeline is CUDA-only; this loader itself is harmless on any machine, but the generation it feeds isn't.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| video_path | STRING | examples/generated/01_v2a_basic/v2a_video.mp4 | — |
| duration | FLOAT | 8.00.7–30 | Upper limit for video generation. The actual output follows the input video length up to 30s. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| controlfoley_video | CONTROLFOLEY_VIDEO | — |
| video_path | STRING | — |
| video_output | VIDEO | — |