📋 S42 CutFlow Frame Extract
Indices, Intervals, and Ranges
- clip
- frames
- frame_count
- info
You don't always need a full clip. Sometimes you need three specific frames for an LTX guide, a thumbnail candidate, or a keyframe for a storyboard. Sometimes you want to drop from 24fps to 6fps for a choppy stylized look or to cut processing load. S42CF_FrameExtract does both jobs with one mode switch - it pulls frames out of an IMAGE batch by index, by interval, or by range.
The three modes
indices- pull exact frames from a comma-separatedindex_list(default0, 12, 24). This is the keyframe picker. Use it to grab first/middle/last frames from a source video to feed as LTX 2.3 guide frames, or to pull thumbnails for a contact sheet.interval(default) - take every Nth frame viainterval(default 4 → frames 0, 4, 8…). This is the frame-rate reducer. Extract every 4th frame from 24fps footage and you've got a 6fps version - a classic stylized-choppy look, or a way to iterate fast on a heavy chain at reduced cost.range- pull a contiguous block fromrange_starttorange_end(default 0 to -1, where -1 means end of clip). This is basically a lightweight trim that doesn't need FPS info, and it's handy for slicing a segment out for separate processing.
Why you'd bother
The outputs are frames (the extracted IMAGE batch), frame_count, and info. Note the output name is frames, not clip - don't go hunting for a clip socket that isn't there.
Three concrete uses, all real:
- LTX guide frames. LTX 2.3's FLF2V workflow wants specific frames for conditioning (via LTXVAddGuide). Extract first + last, or a few keyframes, and feed them where the guide nodes expect images.
- Batch thumbnails. Pull a handful of evenly spaced frames, stack them into a contact sheet elsewhere, and you can review a whole clip's worth of content without watching it.
- Speed + processing tricks. Downsample a high-fps source before a heavy effect so you're only running the effect on a fraction of the frames, then (if needed) let a frame-blend or insert step bring it back toward full.
Install
It's one node in the 53-node S42 CutFlow pack. ComfyUI Manager → search "S42 CutFlow" → Install → restart ComfyUI. Manual:
cd ComfyUI/custom_nodes/
git clone https://github.com/GeekyGhost/S42-CutFlow.git
pip install -r S42-CutFlow/requirements.txt
Restart fully and confirm [S42 CutFlow] Loaded 53 total nodes in the console. Pure CPU, no models, no VRAM - just tensor slicing under the hood. Only pack-level dependency is OpenCV (opencv-python-headless in the requirements file; the README's troubleshooting suggests opencv-python if you see "No module named 'cv2'").
And the standing pack disclaimer, briefly: Geeky Ghost ships this as a work-in-progress grooming ground for LTX Desktop. The clip-ops core is stable; keep an eye on changelogs for the expanded nodes.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | IMAGE | Source clip. | |
| mode | COMBO | interval | 'indices' = specific frame numbers from index_list. 'interval' = every Nth frame. 'range' = continuous range. |
| index_list | STRING | 0, 12, 24 | Comma-separated frame indices (used in 'indices' mode). E.g. '0, 12, 24, 36'. |
| interval | INT | 41–100 | Extract every Nth frame (used in 'interval' mode). E.g. 4 = frames 0,4,8,12... |
| range_start | INT | 00–99999 | Start frame for 'range' mode. |
| range_end | INT | -1-1–99999 | End frame for 'range' mode. -1 = end of clip. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |
| frame_count | INT | — |
| info | STRING | — |