Load Video From Bucket (Advanced)
VHS-style frame controls on your S3 clips
- images
- audio
- fps
- frame_count
- manifest
The basic Load Video From Bucket hands you a whole VIDEO - fine for playback, useless when you want to process individual frames. Load Video From Bucket (Advanced) is the one for actual video work: it pulls the clip from the bucket and breaks it into images, audio, fps, and frame_count, with three frame controls straight out of the VHS playbook.
The inputs
- key (COMBO) - pick the asset from a dropdown of everything in your bucket (or a text field if
S3_ALLOW_KEY_LISTING=false). - skip_first_frames (INT, default 0) - drop this many frames from the start.
- frame_load_cap (INT, default 0) - max frames to keep;
0= all. - select_every_nth (INT, default 1) - keep every Nth frame;
1= keep everything.
The outputs
- images (IMAGE) - the frames after your trimming, as a batch tensor.
- audio (AUDIO) - the full source audio. The tooltip is worth quoting: it's not re-synced to decimated frames. If you keep every 3rd frame, the audio is still the whole track - plan your own sync if you're combining them.
- fps (FLOAT) - the frame rate, divided by
select_every_nthwhen you decimate. This is the number to feed a downstream encoder so your output plays at the right speed. - frame_count (INT) - how many frames you actually got after trimming.
- manifest (BUCKET_MANIFEST) - the asset's metadata.
How it works
The order of operations is skip first, then decimate, then cap - so skip_first_frames and select_every_nth interact the way you'd hope. The real gift is the fps output: when you keep every Nth frame, the output fps is divided accordingly, which means you can hand fps straight into an encoder (like Output Video Bucket (Advanced)) and the timing stays correct without manual math. That one detail saves real headaches.
When you'd reach for it
Frame-accurate work: video upscaling, frame interpolation, keyframe-based edits, or feeding a clip into an image-processing pipeline as a batch. Skip the first N frames to cut the title card, decimate a 60fps clip to 30 for speed, cap the count to bound your VRAM on long renders. It's the node that turns a bucket video into something an image model can chew on.
Install
ComfyUI Manager (search In-N-Out Bucket) or:
cd ComfyUI/custom_nodes
git clone https://github.com/littleowl/ComfyUI_In-N-Out_Bucket.git
pip install -r ComfyUI_In-N-Out_Bucket/requirements.txt
cp ComfyUI_In-N-Out_Bucket/.env.example ComfyUI_In-N-Out_Bucket/.env
Restart, under buckets/video. Deps: boto3 + python-dotenv; PyAV ships with ComfyUI.
Gotchas
The audio-sync thing is the big one - remember the audio output is the full track regardless of how much you decimate the frames. And an empty key dropdown means either S3_ALLOW_KEY_LISTING=false (you'd see a text box) or the bucket was unreachable when the node loaded, so check the endpoint before assuming your videos vanished. Frame counts explode memory fast on long clips; frame_load_cap exists because of it - set it before your first render on something hours long.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| key | COMBO | Select a video asset key from the bucket. | |
| skip_first_frames | INT | 00–4294967295 | Drop this many frames from the start. |
| frame_load_cap | INT | 00–4294967295 | Max frames to keep (0 = all). |
| select_every_nth | INT | 11–4294967295 | Keep every Nth frame (1 = all). Output fps is divided accordingly. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| audio | AUDIO | Full source audio (not re-synced to decimated frames). |
| fps | FLOAT | — |
| frame_count | INT | — |
| manifest | BUCKET_MANIFEST | — |