Load Media
Ten images, five videos, and every soundtrack from one node
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- image_9
- image_10
- audio_1
- audio_2
- audio_3
- audio_4
- audio_5
- video_1
- video_2
- video_3
- video_4
- video_5
- video_audio_1
- video_audio_2
- video_audio_3
- video_audio_4
- video_audio_5
Load Media (class DA_LoadMedia) is the batch-input node you wire up when you're tired of dragging a separate Load Image onto the canvas for every input. One node, twenty inputs, twenty outputs: ten images, five audio tracks, five videos, and - the part that makes it interesting - every video also hands you its soundtrack as a separate AUDIO output. It's part of the small dauncle2026/DA_Nodes pack, and it's a natural feeding partner for the pack's other nodes, like Set Reference Latents with its ten image slots.
How it works
You type filenames instead of browsing for files. Each slot is a plain string field: put my_style_ref.png in image_1, broll.mp4 in video_1, and so on. The name resolves against ComfyUI's input folder, and it understands the same subfolder shorthand ComfyUI's own loaders do, so subdir/clip.mp4 just works.
The clever bit is that a video slot doesn't just return frames. Behind the scenes it calls ComfyUI's native LoadVideo, which decodes the clip into an IMAGE batch on video_1 and extracts the audio track, which lands on video_audio_1. That's exactly the shape the LTX2-style workflows in this pack want: frames for conditioning, soundtrack for the audio side, both from one filename.
Empty slots are genuinely empty. If you leave image_3 blank it outputs nothing, no validation error, no failed run - which means one workflow serves 1-to-10 images without you editing the graph. Validation only fires when a slot has a filename and that file can't be found, and the error is blunt: "Invalid file: whatever_you_typed.png". Typos are the number one way to hit it.
One more detail worth knowing: the node fingerprints each loaded file by name, size, and modification time. Overwrite a file with a new version and the node re-runs even though the filename didn't change. For iterating on a reference or a b-roll clip that's a genuinely useful behavior - most loaders will happily serve you stale cached output.
The inputs that matter
You won't touch all twenty. The ones to know:
image_1throughimage_10- filename strings; each outputs anIMAGE.audio_1throughaudio_5- filename strings; each outputsAUDIO.video_1throughvideo_5- filename strings; each outputs frames asIMAGEon the same-numbered video output, and the soundtrack asAUDIOonvideo_audio_1throughvideo_audio_5. The pairings are by number -video_2's audio is alwaysvideo_audio_2.
Wire the image outputs into your reference-latent node, IP-Adapter, or batch comparison, the audio into whatever consumes AUDIO, and leave the rest alone.
Installing it
DA_LoadMedia ships in the DA_Nodes pack. Easiest route is ComfyUI Manager - search for "DA_Nodes" and install. Or clone it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/dauncle2026/DA_Nodes
Then restart ComfyUI. There's nothing else to download: the pack has no requirements.txt, no model files, no weights. All its dependencies are ComfyUI core (LoadImage, LoadAudio, LoadVideo, PyAV/ffmpeg that ComfyUI already bundles). One gotcha: the pack uses ComfyUI's newer extension entrypoint, so if the nodes don't show up after install, update ComfyUI before assuming something's broken.
Troubleshooting
- "Invalid file: ..." - the filename isn't in the input folder (or a subfolder), or you typo'd it. Paths are relative to
input, not absolute. - Video outputs nothing - if video decoding isn't working, test the same clip in ComfyUI's own Load Video node first. This node inherits whatever the core loader does, so a core loader failure will surface here identically.
- Don't wire empty slots. An unused slot outputs
None, and downstream nodes will choke on it. Only connect the slots you actually filled.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| image_1opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_2opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_3opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_4opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_5opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_6opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_7opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_8opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_9opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_10opt | STRING | Filename in the input folder. Leave empty to skip. | |
| audio_1opt | STRING | Filename in the input folder. Leave empty to skip. | |
| audio_2opt | STRING | Filename in the input folder. Leave empty to skip. | |
| audio_3opt | STRING | Filename in the input folder. Leave empty to skip. | |
| audio_4opt | STRING | Filename in the input folder. Leave empty to skip. | |
| audio_5opt | STRING | Filename in the input folder. Leave empty to skip. | |
| video_1opt | STRING | Filename in the input folder. Decoded to frames and soundtrack. Leave empty to skip. | |
| video_2opt | STRING | Filename in the input folder. Decoded to frames and soundtrack. Leave empty to skip. | |
| video_3opt | STRING | Filename in the input folder. Decoded to frames and soundtrack. Leave empty to skip. | |
| video_4opt | STRING | Filename in the input folder. Decoded to frames and soundtrack. Leave empty to skip. | |
| video_5opt | STRING | Filename in the input folder. Decoded to frames and soundtrack. Leave empty to skip. |
Outputs (25)
| 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 | — |
| image_10 | IMAGE | — |
| audio_1 | AUDIO | — |
| audio_2 | AUDIO | — |
| audio_3 | AUDIO | — |
| audio_4 | AUDIO | — |
| audio_5 | AUDIO | — |
| video_1 | IMAGE | Video frames |
| video_2 | IMAGE | Video frames |
| video_3 | IMAGE | Video frames |
| video_4 | IMAGE | Video frames |
| video_5 | IMAGE | Video frames |
| video_audio_1 | AUDIO | Soundtrack of the same-numbered video |
| video_audio_2 | AUDIO | Soundtrack of the same-numbered video |
| video_audio_3 | AUDIO | Soundtrack of the same-numbered video |
| video_audio_4 | AUDIO | Soundtrack of the same-numbered video |
| video_audio_5 | AUDIO | Soundtrack of the same-numbered video |