Kling Video Loader
Load a local video as frames, path, and audio in one shot
- video
- video_path
- audio
Drop an mp4 into ComfyUI's input folder and KlingDirect_VideoLoader turns it into everything a Kling workflow could want at once: the frames as an IMAGE batch, the file path as a STRING, and the audio track as an AUDIO tensor. Three outputs, one dropdown, no API call, no credits. It's the pack's local-media front door, and it sits right next to Raw File Loader - the difference is that this one actually decodes the video.
That decode is what you should notice: this node loads the video into memory as frames (with the pack's v2.1 pre-allocated-tensor path, which roughly triples the frame count it can handle before OOM - 600-frame 1080p clips now work where they used to die). That's the right trade when you need the pixels for local post-processing. If you only need a path to hand to a URL-based node, Raw File Loader skips the decode entirely and is the cheaper choice.
The single input
- video - a dropdown of video files in the input directory (mp4, mov, avi, webm). It's marked
video_upload, so you can also drop a file straight onto the widget.
The three outputs
- video (
IMAGE) - all frames as a tensor batch, ready for preview, post-processing, or feeding into a local pipeline. - video_path (
STRING) - the absolute path on disk. This is what you hand to nodes that want a file location. - audio (
AUDIO) - the extracted soundtrack, decoded alongside the frames.
The all-in-one design is the useful bit: preview the clip and keep its path and audio from a single node, instead of wiring a video loader, a path finder, and an audio extractor separately.
Install
Part of ComfyUI-Kling-Direct: ComfyUI Manager → search "Kling Direct" → install, or git clone https://github.com/IxMxAMAR/ComfyUI-Kling-Direct into ComfyUI/custom_nodes, then restart. Pure local I/O - no auth, no key, no model downloads. The pack's deps (opencv-python for the frame decode, numpy, torch, Pillow, requests) are already satisfied by ComfyUI.
Where people get burned
- It decodes everything. Loading a long, high-res video as a tensor is memory-hungry even with the v2.1 fix. If you're only after the file path, use
Raw File Loaderand skip the frames. - The dropdown needs the file to exist. The list populates from the input folder; drop a new file in while ComfyUI is running and you may need to refresh or restart to see it.
- Audio extraction isn't magic. If the source is a silent video, the
audiooutput is a silent/empty tensor - nothing wrong with your graph, the source just has no track.
It doesn't call Kling at all - this node is the local half of the workflow, feeding media in from your disk so the cloud half can do its thing.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| video | COMBO | Select a video file from the ComfyUI input directory. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | IMAGE | — |
| video_path | STRING | — |
| audio | AUDIO | — |