Kling Fast Video Saver
Save the Video Without Loading It Into VRAM
- file_path
- filename
Kling Fast Video Saver downloads a video from a URL straight to your ComfyUI output folder - and crucially, it does it without ever loading the video into a tensor. That one architectural decision is the whole point of the node. Video tensors are enormous; a 600-frame 1080p clip can blow out your RAM or VRAM just by existing in the graph. This node streams the file to disk, byte by byte, and hands you back a path. OOM-proof by construction.
The pack's own changelog makes the pain explicit: earlier versions of the video-loading path "was OOM on 600-frame 1080p videos," and v2.1 fixed the tensor loader with pre-allocation. Fast Video Saver sidesteps the problem entirely - you don't need the frames in memory, you need the file.
How it works
Two inputs:
url- the video URL to download (force-input, so it's meant to be wired from a node that produces a URL - theurloutput of a Kling generation node, for instance).filename_prefix- the prefix for the saved filename, defaultkling_fast. The node appends a short random suffix and detects the extension from the URL path, defaulting to.mp4if there isn't one.
Outputs: file_path (the full path to the saved file in ComfyUI/output) and filename (just the name). It's marked as an output node, so it doesn't need to be wired further - running it is the workflow's end.
Under the hood it's a streamed requests download with three retries and backoff, cleaning up partial files between attempts. And because v2.1, the URL is passed through the pack's scheme guard, so file:// / gopher:// and internal addresses are refused by default unless you set KLING_ALLOW_INTERNAL_HTTP=1. That's a genuine security nicety - downloading from arbitrary URLs is exactly the kind of action a hostile URL could abuse.
When to use it (vs. the tensor path)
Every Kling generation node in this pack also outputs video_file by downloading and loading the result into an IMAGE tensor - convenient, but memory-hungry for long clips. Fast Video Saver is your escape hatch:
- You only want the file. No further processing in the graph, no preview needed - just "get this on disk."
- The clip is long or high-res. 10–15s at 1080p from Kling can be heavy; a 4K or extended render even more so. Skip the tensor, keep the machine calm.
- You're building a headless/batch pipeline that saves outputs and moves on.
If you do need the frames as an IMAGE batch for further processing, this is the wrong node - use the generation node's video output instead, and consider the pack's memory-fixed tensor loader (v2.1 pre-allocates, so it's much friendlier than it used to be).
Common issues
- "FastVideoSaver requires a URL" - the
urlinput was empty. It's force-input, so a wired-in URL is expected; if you're typing one by hand, double-check it's complete and reachable. - "failed after 3 attempts" - the download kept erroring. Usually the URL is dead, the host is rate-limiting, or (v2.1) the URL is blocked by the scheme/SSRF guard - a
file://or loopback URL will be refused, and internal hosts needKLING_ALLOW_INTERNAL_HTTP=1. - Wrong extension saved - the node guesses from the URL path. URLs without a clean extension (signed CDN links, query strings) fall back to
.mp4, which is right for Kling video but can be wrong for other sources.
Install
Part of ComfyUI-Kling-Direct:
cd ComfyUI/custom_nodes
git clone https://github.com/IxMxAMAR/ComfyUI-Kling-Direct
or ComfyUI Manager → search "Kling Direct" → install → restart. No model downloads, no GPU, nothing beyond ComfyUI's bundled libraries. One node that quietly prevents a whole class of out-of-memory crashes - worth keeping on the canvas.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| url | STRING | URL of the video to download and save. | |
| filename_prefix | STRING | kling_fast | Prefix for the saved filename. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| file_path | STRING | — |
| filename | STRING | — |