Load Video from URL
Pull a remote video into ComfyUI as frames (no API key needed)
- frames
- frame_count
- video_info
Almost every other node in this pack calls fal and needs an API key. This one doesn't. It's a plain utility: give it a URL that points at a video file, and it downloads and decodes that video into a batch of frames you can actually work with inside ComfyUI. No FAL_KEY, no per-call billing - it just fetches and unpacks.
Why it's in a fal pack, and why it's genuinely useful: the fal video nodes (Kling, Sora, Veo, Wan, and the rest) hand you back a URL string, not playable frames. This node is the other half of that loop. Wire a video node's STRING output into this node's url, and you get the generated clip back as IMAGE frames - ready to upscale, interpolate, restyle, or recombine locally.
What it actually does
It pulls the video from the URL and turns it into three outputs: frames (an IMAGE batch - every frame as an image, the way ComfyUI wants video), frame_count (an INT), and video_info (a VHS_VIDEOINFO bundle with fps, dimensions, and duration, matching what VideoHelperSuite nodes expect). From there it's a normal ComfyUI image batch: run it through any per-frame process and recombine it with a video-combine node.
The inputs that matter
- url (required): the direct link to the video file. This is the whole point - paste it, or wire in the URL output of another node.
- frame_load_cap: max frames to load,
0for all. The single most important knob for keeping memory and time under control - a long clip decoded in full can be thousands of frames and eat your VRAM. - select_every_nth: take every Nth frame. Set it to 2–4 to thin out a high-fps clip you don't need every frame of.
- skip_first_frames: trim from the front.
There's also force_rate (resample to a target fps, 0 = leave it), and force_size with custom_width/custom_height for on-load resizing (Disabled keeps native resolution). For most uses you leave the sizing alone and only touch the frame-count controls.
Installing it
It ships with the pack, so: ComfyUI Manager → search ComfyUI-fal-API → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/gokayfem/ComfyUI-fal-API.git
cd ComfyUI-fal-API
pip install -r requirements.txt
Restart ComfyUI. Since this node doesn't call fal, you don't need an API key for it specifically - but you do still need the pack's dependencies from requirements.txt, and the VHS_VIDEOINFO output plays nicest with VideoHelperSuite installed alongside.
Where people get burned
The classic mistake is loading a huge clip with frame_load_cap at 0 and watching ComfyUI grind or OOM - a few seconds of 60fps 1080p is a lot of image tensors. Cap the frames and use select_every_nth if you don't need full temporal resolution.
The other one is the URL itself: it has to point at an actual downloadable video file, and fal result URLs expire after a while, so if you're feeding it a generated video link, load it promptly (or save the file first with the pack's Fal Save Media from URL node). A dead or expired link is the usual cause of a load failure here, not the node.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| url | STRING | https://example.com/video.mp4 | — |
| force_rate | INT | 00–60 | — |
| force_size | COMBO | 10 options: Disabled, Custom Height, Custom Width, Custom, 256x?, ?x256, +4 | |
| custom_width | INT | 5120–8192 | — |
| custom_height | INT | 5120–8192 | — |
| frame_load_cap | INT | 00–1000000 | — |
| skip_first_frames | INT | 00–1000000 | — |
| select_every_nth | INT | 11–1000000 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |
| frame_count | INT | — |
| video_info | VHS_VIDEOINFO | — |