π’ Frame Set Index Offset
Slide an entire clip along its own timeline
- frames
- frames
Frame Set Index Offset [DVB] shifts every frame index in a frame set by the same amount. One input frames, one offset integer, one frames output. It doesn't move pixels, it doesn't change the order of images - it moves the timeline labels on them. A set indexed 0 through 23 with an offset of 30 comes back indexed 30 through 53. That's the whole trick, and in a pack where indices are the language of composition, it's surprisingly load-bearing.
Why shifting indices matters
The Dream Video Batches nodes treat frame indices as the truth about where each frame lives in time - fades, transitions, merges, and appends all reason about indices, not about the order images happen to be in. So sliding a clip's indices is how you align two sets against each other. Want a Blended Transition to overlap two clips at a particular moment? Offset one set so its relevant frames land where the other's do. Merging keyframes from two sources? Offset aligns their timelines before the merge decides which frame wins each index.
It also preserves gaps. The implementation reindexes relative to the set's current first index, so whatever spacing exists - contiguous 0,1,2,3 or gappy 0,5,10 - is carried along, just displaced. That's different from Frame Set Reindex [DVB], which rewrites the indices entirely (start, step, no gaps). Think of it this way: Index Offset slides the ruler; Reindex replaces it. They're easy to confuse at a glance and they do different jobs.
When you'd actually reach for it
The most common real use is before a merge or append when two sets came from different generation passes and their index ranges overlap or don't line up. A typical fix-up chain looks like: Index Offset to move one set into place, then Frame Set Merger with the right priority, then Reindex if you want a clean contiguous timeline afterward. If the set came out of a Repeat or an Append and you want to nudge the whole thing, offset is the surgical tool.
One thing to keep in mind: offsets are per-frame-set, not per-node-instance, so a node that shifts by +30 doesn't remember anything between runs. Re-execute the graph and it recomputes from the input - no state to clear, which is the good kind of behavior.
The pack-wide rule
Output is a FRAME_SET, which standard ComfyUI nodes can't consume. When you're finished composing and want to save or encode, route the set through Unwrap Frame Set [DVB] to get a plain IMAGE batch plus the framerate, then feed that to your video output nodes. Same exit door as every other node in this pack - build it into your workflow from the start and you'll skip the most common beginner failure with the whole pack.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/alt-key-project/comfyui-dream-video-batches.git
cd comfyui-dream-video-batches
pip install -r requirements.txt
Restart ComfyUI, or search "Dream Video Batches" in ComfyUI Manager. No model downloads - this is integer arithmetic on the timeline.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| frames | FRAME_SET | β | |
| offset | INT | 0 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| frames | FRAME_SET | β |