๐๏ธ QwenVL Load Media (image+video)
One dropdown for images and video, and it's quietly the useful one
- image
- video
- path
What it is
A loader with no interest in being clever. It lists every image and every video sitting in your ComfyUI input/ and output/ folders in a single dropdown, tagged [input] or [output] so you know which pile a file came from, with upload buttons for both formats. Pick a file, get tensors out.
It's in the pack's QwenVL-Mod/Utils category rather than the main vision category, which undersells it - this is the node the entire Livepeer side of this pack is built around. The author's own demo workflow is Load Media โ Livepeer Render, and the reason is the round trip: render a clip, and it lands in output/, where this node already sees it. No manual copying, no re-uploading a file you generated thirty seconds ago.
Where it also earns its place: chaining a generated clip into the next image-to-video pass, or dropping to an older generation of your own output to re-caption it.
How it works
The media widget is built by walking input/ and output/ recursively at node-definition time, collecting anything ending in .png, .jpg, .jpeg, .webp, .mp4, .webm or .mov, and capping the list at 2000 files. Each entry carries its [input]/[output] tag as part of the widget string, and the load step strips that tag back off to find the real path.
What you get out depends on the file type, and the two branches are genuinely different:
- Image file โ
imagegets the tensor,videostays empty. - Video file โ
videogets a properVIDEOobject, andimagegets one extracted frame.
That single extracted frame is the useful half. frame_index defaults to 0 and takes -1 for the last frame, so you can point it at the end of a clip and use that as the first frame of the next one - the exact move you need for i2v chaining. The three outputs are image (IMAGE), video (VIDEO) and path (STRING, the absolute path on disk, handy for logging or for nodes that want a filename).
It's flagged as an output node, so it previews in-node, and it re-runs when the underlying file changes (the change check is path plus mtime) - which is the behaviour you want, because regenerating over a filename you're already loading is normal.
Install
It ships with the rest of the pack, no extra dependencies:
cd ComfyUI/custom_nodes
git clone https://github.com/huchukato/ComfyUI-QwenVL-Mod
cd ComfyUI-QwenVL-Mod && pip install -r requirements.txt
Or find QwenVL-Mod: Enhanced Vision-Language in ComfyUI Manager and restart. Nothing downloads, nothing to configure.
Gotchas worth knowing before you file a bug
The list is a snapshot. It's generated when the node's inputs are defined, so a file you just dropped into input/ isn't there until you refresh or reload the graph. This is the same reason people "lose" models in dropdowns.
.mkv and .avi aren't supported - the extension list is strictly png/jpg/jpeg/webp and mp4/webm/mov. Remux to mp4 and it'll show up.
Untagged names resolve input/ first. The upload widget hands back a bare filename with no tag, so if you happen to have clip.mp4 in both folders, the one in input/ is what you get.
Moving or renaming a file breaks a saved workflow. The tag is part of the value stored in the graph, so a renamed file resolves to nothing and you get media file not found. If a workflow that worked yesterday suddenly errors on load, check the media dropdown first.
VIDEO output needs a reasonably current ComfyUI. The video branch depends on the core VIDEO type being importable; on an old build you'll get VIDEO input type not available in this ComfyUI version. Update ComfyUI rather than the node.
Wiring it
Two habits save confusion. Send video to nodes that declare a VIDEO input - this pack's Livepeer render node, video savers, anything post-processing clips. Send image to the vision node's frame input, because that one wants IMAGE frames, not a video object. Mixing them up is the most common wiring mistake with this node, and the error you get is a type mismatch that reads like nonsense.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| media | COMBO | 1 options: example.png [input] | |
| frame_index | INT | 0-1โ10000 | For videos: which frame to emit on the IMAGE output. 0 = first, -1 = last. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | โ |
| video | VIDEO | โ |
| path | STRING | โ |