📦 多路径文件批量加载
Nine images, three videos, three audio files from one text box
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- image_9
- video_1
- video_audio_1
- video_2
- video_audio_2
- video_3
- video_audio_3
- audio_1
- audio_2
- audio_3
- image_count
- video_count
- audio_count
MultiFileLoader (displayed as "📦 多路径文件批量加载") is the media feeder in comfyUI_LLM, a pack whose name makes it sound like it does nothing but language models. It doesn't - the rest of the pack wires DeepSeek, Ollama, and online LLM APIs into your graph, and this node is the piece that gives all that text-generating machinery something to look at and listen to. The name is the one honest thing about the pack's branding: this node calls no API, needs no key, and doesn't touch an LLM at all.
You'd reach for it in exactly one scenario: a workflow with a lot of reference media. Say you're captioning a handful of images with a VLM, or feeding a video-generation model a set of reference frames plus audio. Without this node you'd drop in nine Load Image nodes, three Load Video nodes, and three Load Audio nodes, and wire each by hand. This replaces the whole pile with one node and one multiline text box. Paste paths, hit queue, done.
How it works
You get three multiline STRING inputs - image_paths, video_paths, audio_paths - and you paste whatever you've got. The splitter is forgiving to the point of being smart: commas, semicolons, pipes, newlines, tabs, braces, and Chinese or English quotes all work as separators, and it even tolerates spaces. It's careful with backslashes too, so a Windows path like C:\refs\shot.png survives intact instead of being shredded at every \.
Each path is resolved as an absolute path first, then relative to your ComfyUI input folder. Then the interesting part: auto_classify (on by default) re-buckets everything by file extension. Paste an mp4 into image_paths by accident and it quietly lands in the video outputs instead of erroring. Off by default is never a good idea here - leave it on.
The loader then does the real work:
- Images load through PIL into
(1, H, W, C)float tensors in[0,1], with EXIF rotation applied. Same shape Load Image gives you. - Videos get decoded frame-by-frame with OpenCV into a
(T, H, W, C)sequence, and the audio track is ripped with ffmpeg into a separate AUDIO port. - Audio loads through torchaudio as the standard ComfyUI
{waveform, sample_rate}dict.
The ports that matter
Outputs are fixed and generous: image_1 through image_9, video_1–video_3 (each paired with a video_audio_n AUDIO port), audio_1–audio_3, plus image_count, video_count, and audio_count INTs that tell you how many of each actually loaded. The port layout is deliberate - the source comments say it's aligned with MiniMax H3's reference-to-video inputs, 9 images / 3 videos / 3 audio. Unused ports come back as None, so you just leave them unwired; that's the whole "one workflow fits 0–N assets" trick.
Installing it
ComfyUI Manager, search "comfyUI_LLM," install, restart. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/XieJunchen/comfyUI_LLM
# restart ComfyUI
The pack's requirements.txt pulls pillow, numpy, requests, qiniu, openai, imageio-ffmpeg, torch, and torchaudio. No model downloads for this node - it's pure loading, and the README is a nearly-empty Chinese blurb about the DeepSeek integration, so don't go looking for docs here.
Where people get burned
Two real gaps live in the source, not the README. OpenCV is used for video but never declared in requirements.txt - if video loading dies with a ModuleNotFoundError for cv2, that's why. pip install opencv-python fixes it. Second, audio extraction shells out to a system ffmpeg binary, not the bundled imageio one; if ffmpeg isn't on your PATH, you don't get an error - you get a silent audio clip instead, which is a genuinely confusing thing to debug downstream.
Beyond that: more than 9 images or 3 videos are silently truncated with a console warning, missing files are skipped, and the whole pack is small and new with basically no install footprint. As with any LLM-adjacent node, it's arbitrary Python with full OS access - and the pack does reach the network (OpenAI, qiniu cloud upload). Read before you trust, but the loader itself is just local file opening. For "throw a stack of reference files at a workflow," it does exactly one job and does it well.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image_pathsopt | STRING | 图片路径,支持 , ; | 换行 空格 引号 花括号 等分隔 | |
| video_pathsopt | STRING | 视频路径,同上分隔规则 | |
| audio_pathsopt | STRING | 音频路径,同上分隔规则 | |
| auto_classifyopt | BOOLEAN | true | 开启时会按扩展名自动纠正类型(比如把 mp4 从 image_paths 归到视频输出) |
Outputs (21)
| Name | Type | Description |
|---|---|---|
| image_1 | IMAGE | — |
| image_2 | IMAGE | — |
| image_3 | IMAGE | — |
| image_4 | IMAGE | — |
| image_5 | IMAGE | — |
| image_6 | IMAGE | — |
| image_7 | IMAGE | — |
| image_8 | IMAGE | — |
| image_9 | IMAGE | — |
| video_1 | IMAGE | — |
| video_audio_1 | AUDIO | — |
| video_2 | IMAGE | — |
| video_audio_2 | AUDIO | — |
| video_3 | IMAGE | — |
| video_audio_3 | AUDIO | — |
| audio_1 | AUDIO | — |
| audio_2 | AUDIO | — |
| audio_3 | AUDIO | — |
| image_count | INT | — |
| video_count | INT | — |
| audio_count | INT | — |