Nodes/ComfyUI-Apt_Preset/basicIn_media_unpack
ComfyUI Node

basicIn_media_unpack

Pull exactly one thing out of a media bundle

By cardenluo·Created 2 years ago·Updated a day ago· 332
basicIn_media_unpack
  • media
  • media_1
  • media_2
  • media_3
  • media_4
  • media_5
  • media_6
  • media_7
  • media_8
  • media_9
  • media_10
  • media_11
  • media_12
  • media_13
  • media_14
  • media_15
  • media_16
  • media_17
  • media_18
  • media_19
  • media_20
  • media_21
  • media_22
  • media_23
  • media_24
  • media_25
  • media_26
  • media_27
  • media_28
  • media_29
  • media_30
  • media_31
  • media_32
  • media_33
  • media_34
  • media_35
  • media_36
  • media_37
  • media_38
  • media_39
  • media_40
  • media_41
  • media_42
  • media_43
  • media_44
  • media_45
  • media_46
  • media_47
  • media_48
  • media_49
  • media_50
  • media_51
  • media_52
  • media_53
  • media_54
  • media_55
  • media_56
  • media_57
  • media_58
  • media_59
  • media_60
  • media_61
  • media_62
  • media_63
  • media_64
  • index_video
  • index_text
  • index_image
  • index_audio
output_index1
shot_modefalse
media_type_1
media_type_2
media_type_3
media_type_4
media_type_5
media_type_6
media_type_7
media_type_8
media_type_9
media_type_10
media_type_11
media_type_12
media_type_13
media_type_14
media_type_15
media_type_16
media_type_17
media_type_18
media_type_19
media_type_20
media_type_21
media_type_22
media_type_23
media_type_24
media_type_25
media_type_26
media_type_27
media_type_28
media_type_29
media_type_30
media_type_31
media_type_32
media_type_33
media_type_34
media_type_35
media_type_36
media_type_37
media_type_38
media_type_39
media_type_40
media_type_41
media_type_42
media_type_43
media_type_44
media_type_45
media_type_46
media_type_47
media_type_48
media_type_49
media_type_50
media_type_51
media_type_52
media_type_53
media_type_54
media_type_55
media_type_56
media_type_57
media_type_58
media_type_59
media_type_60
media_type_61
media_type_62
media_type_63
media_type_64

basicIn_media_unpack is the counterpart to the pack's media hubs: the hubs collect a pile of mixed material onto one wire, this node takes that wire back apart. If the pack's stage workflows look clean, it's because hubs and unpacks are doing the wire management.

The two settings that matter

output_index (an INT, default 1, up to 5000) and shot_mode (a boolean). Everything else is inputs.

The index counts per type, not across everything. Connect three videos, three images and three text blocks, set output_index to 2, and you get the second video, the second image and the second text, all at once, each on its own output. That's the one thing to internalise, because the natural reading - "index 2 means item 2 in the bundle" - is wrong and will have you chasing a phantom off-by-one.

The four outputs are index_video, index_text, index_image and index_audio. Wire each to whatever needs it. If the index runs past the end of a lane, that lane is blocked rather than errored - downstream nodes just don't execute. That's deliberate, and it's why a missing output is usually "my index is too high", not "the node broke".

How it decides what's what

Every input declares its own type. You get media (the hub wire) plus media_1 through media_64, each paired with a media_type_N string. Give media_type_1 the value video and that socket is treated as video no matter what's actually plugged in; image or image_batch for images, audio for audio, and batch or text for text. Leave the field blank and the node guesses from the payload: a string is text, a dict with a waveform is audio, something with get_components is video, a 4D tensor is an image, a list of strings is text.

That guessing is mostly reliable - except for text that arrives as a list of strings, as it does out of the pack's own prompt nodes. Declare it batch and each element becomes an indexed text entry. Skipping that step is the classic way to get one giant text block where you wanted shot four.

Text is also split on segment headers. A single string containing #segment 1--------- style markers (or the 【Segment 1】 variant) is torn into one entry per segment, so a shot list authored as one blob addresses cleanly by index.

shot_mode, which is the clever bit

With shot_mode off, you're indexing raw lanes. With it on, you index text segments and the node reads the material tags inside the selected segment to decide what to hand you. Write a shot that says "Picture 2 holds the pose, Video 1 drives the camera" and the node outputs that exact image on index_image, that exact video on index_video, and the segment's text on index_text. The tag syntax is lenient - <Picture 1>, Picture #1, 图片 1, with or without brackets, case-insensitive, and Video/Audio do the same for the other lanes. If the segment references nothing that resolves, all four outputs block.

The practical effect is a shot list that routes its own references. You add a shot to the story, tag which material it uses, and the graph follows - no re-wiring between takes.

Under the hood, and why it stays cheap

Each media_N input is declared lazy, and the node implements check_lazy_status to ask only for the sockets the current index actually needs. In plain ComfyUI every connected input gets evaluated; here, a pose video you aren't referencing this run never gets pulled. That's why this node is worth using even when you could technically wire things directly: it turns a bundle of expensive inputs into one decode instead of six.

Installing it

ComfyUI Manager → ComfyUI-Apt_Preset, or:

cd ComfyUI/custom_nodes
git clone https://github.com/cardenluo/ComfyUI-Apt_Preset
pip install -r ComfyUI-Apt_Preset/requirements.txt

Restart ComfyUI; it lives under Apt_Preset → IO_Port, next to basicIn_media.

Where it frustrates people

The per-type indexing above is the big one. The second is silent blocking: nothing ran, nothing errored, and the fix is to lower the index or add a media_type_N. The third is type mismatch at the ends - the outputs are VIDEO, STRING, IMAGE and AUDIO specifically, so index_video won't plug into an image input even if the payload would have worked, and you'll want the pack's type-conversion nodes or a decode in between. And because the frontend draws the hub's wires rather than real links, a socket can look empty while still resolving at run time - check the node's actual connections when something seems disconnected.

CategoryApt_Preset/IO_Port

Inputs (131)

NameTypeDefaultDescription
output_indexINT11–5000
shot_modeBOOLEANfalse开启后按文本分段索引输出该段实际引用的素材
mediaoptIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_1optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_1optSTRING
media_2optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_2optSTRING
media_3optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_3optSTRING
media_4optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_4optSTRING
media_5optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_5optSTRING
media_6optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_6optSTRING
media_7optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_7optSTRING
media_8optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_8optSTRING
media_9optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_9optSTRING
media_10optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_10optSTRING
media_11optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_11optSTRING
media_12optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_12optSTRING
media_13optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_13optSTRING
media_14optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_14optSTRING
media_15optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_15optSTRING
media_16optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_16optSTRING
media_17optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_17optSTRING
media_18optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_18optSTRING
media_19optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_19optSTRING
media_20optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_20optSTRING
media_21optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_21optSTRING
media_22optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_22optSTRING
media_23optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_23optSTRING
media_24optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_24optSTRING
media_25optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_25optSTRING
media_26optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_26optSTRING
media_27optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_27optSTRING
media_28optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_28optSTRING
media_29optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_29optSTRING
media_30optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_30optSTRING
media_31optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_31optSTRING
media_32optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_32optSTRING
media_33optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_33optSTRING
media_34optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_34optSTRING
media_35optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_35optSTRING
media_36optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_36optSTRING
media_37optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_37optSTRING
media_38optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_38optSTRING
media_39optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_39optSTRING
media_40optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_40optSTRING
media_41optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_41optSTRING
media_42optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_42optSTRING
media_43optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_43optSTRING
media_44optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_44optSTRING
media_45optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_45optSTRING
media_46optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_46optSTRING
media_47optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_47optSTRING
media_48optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_48optSTRING
media_49optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_49optSTRING
media_50optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_50optSTRING
media_51optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_51optSTRING
media_52optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_52optSTRING
media_53optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_53optSTRING
media_54optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_54optSTRING
media_55optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_55optSTRING
media_56optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_56optSTRING
media_57optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_57optSTRING
media_58optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_58optSTRING
media_59optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_59optSTRING
media_60optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_60optSTRING
media_61optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_61optSTRING
media_62optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_62optSTRING
media_63optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_63optSTRING
media_64optIMAGE,VIDEO,AUDIO,STRING,ARRAY
media_type_64optSTRING

Outputs (4)

NameTypeDescription
index_videoVIDEO
index_textSTRING
index_imageIMAGE
index_audioAUDIO