Lazy Load Video
Drop the clip on the node, stop digging through ComfyUI/input
- VIDEO
If you've ever stared at a video loader wondering why the file you want isn't in the dropdown, you already know the problem this solves. ComfyUI loaders read from ComfyUI/input/ and nowhere else. So the ritual is: find the clip, copy it into a folder you've probably never opened, come back, sometimes restart, then pick it from a list. Lazy Load Video deletes the ritual. Drag the file onto the node. Done.
That's the whole idea.
What it actually is
Lazy Load Video is a drop-in replacement for ComfyUI's native Load Video: same single output, same VIDEO type, same file picker. The difference is that the entire node is a drop target, and the drop route is ComfyUI's own upload path rather than you doing it by hand.
Video is where ComfyUI's setup tax hurts most, and most of that tax is this kind of plumbing.
One caveat before you install: the native VIDEO type is young, and most existing video workflows still run through VideoHelperSuite's VHS_LoadVideo and its IMAGE batches. So this helps if you're on the native path - current Wan/LTX templates, edit/extend nodes that speak VIDEO. If your graph wants an IMAGE batch and a frame count, it won't slot in.
How it works
The Python side is barely a node. It lists the video files in your input directory, filters them by content type, and lets you pick one. Executing it hands back a native video handle - no decode, no frame extraction. Loading a clip is instant because nothing is being read yet; decoding happens downstream, when something asks for frames. Which means a broken or exotic codec won't fail here. It fails later, at the node that first reads the stream, and the error can look like it came from the wrong place.
One detail worth appreciating: the node fingerprints inputs on the file's modification time, so re-encode a clip, drop it in under the same name, and the graph re-runs instead of serving cached output from the old file.
The drag-and-drop half is a frontend extension. It hooks the node's drag handlers, spots a video in the dropped file list, POSTs it to ComfyUI's standard /upload/image route - yes, video through the image endpoint; that's just the name of the route - and selects the returned filename in the widget. If the upload fails you get a browser alert, not a silent no-op.
The inputs and outputs that matter
There's exactly one input: file, a dropdown of videos in ComfyUI's input directory. Its tooltip says it plainly - dropping a local video on the node uploads it there and selects it. The normal click-to-upload control still works, so you're never forced to drag.
The one output is VIDEO, described as the native ComfyUI video preserving the source stream, frame rate and audio. That last part is the reason to prefer this over an image-batch loader when downstream nodes want audio or timing. Wire it into anything declaring a VIDEO input - core save/decompose nodes, or whichever edit, extend, or upscale pack you're using.
The author also registered search aliases ("drop video", "drag drop video", "import video", "open video") so the node search finds it.
Install
No dependencies - the pack's pyproject.toml declares an empty dependency list. Get the code in place and restart:
cd ComfyUI/custom_nodes
git clone https://github.com/Molinist/ComfyUI-Cephy-Lazy-Nodes.git
In ComfyUI Manager, search Lazy Load Video, or browse the Cephy Lazy Nodes > video category. Because the pack ships a frontend extension, refresh your browser tab once after installing or updating it - otherwise the drop handler isn't registered and the node looks completely normal while ignoring every file you throw at it. That's the most likely thing to trip you up.
Where people get burned
The node never appears. It's written against ComfyUI's newer V3 node-authoring API (from comfy_api.latest import io, io.ComfyNode, comfy_entrypoint). If your ComfyUI predates that API and the native VIDEO type, the pack can't load. Update ComfyUI and restart. And no, a pack with no NODE_CLASS_MAPPINGS isn't broken - that's what a modern node looks like.
"Invalid video file: …" means the file the workflow points at isn't in the input directory anymore. Same failure as a shared workflow whose LoadImage references a PNG you don't have: the graph stores a filename, not the media. Move the clip back into ComfyUI/input/, or re-drop it on the node.
Dropping a file does nothing. The drop filter only accepts real video containers - mp4, mkv, mov, webm, avi, m4v, wmv, and older things like mpeg, ts, m2ts, flv, ogv or 3gp - or a file the browser reports as video/*. Anything else falls through to ComfyUI's default drop behavior, which is looking for a workflow file. Nothing useful happens, and nothing explains why.
Big files look frozen. The upload is one POST and the widget only updates when it finishes. A multi-gigabyte mov on a slow link gives you minutes of a node that appears to be ignoring you.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| file | COMBO | Video in ComfyUI's input directory. Dropping a local video on the node uploads it there and selects the uploaded file. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| VIDEO | VIDEO | Native ComfyUI video preserving the source stream, frame rate, and audio for downstream video nodes. |