Chop Cuts
Split a clip into per-scene MP4s without leaving the graph
- images
- video_paths
- output_folder
- report
- num_scenes
Shot-boundary detection is the unglamorous prep step of every video pipeline that cares about shots: find the cuts, then do something per-scene - keyframe each scene, generate per-shot prompts, split a long render into usable clips. Chop Cuts is the "do something" node: it takes a frame batch, detects the scene cuts, and exports each scene as its own MP4 with FFmpeg, plus a report of where every cut landed.
The detection is multi-metric, GPU-accelerated, and honest about its options. detection_method picks between hybrid (default, intensity + edge combined via Sobel), intensity (plain frame-difference), histogram (color-distribution shift), and adaptive (for fast camera motion, where the other methods misfire). threshold (default 30) sets how big a difference counts as a cut, and min_scene_frames (default 12) prevents micro-scenes - a threshold spike that lasts two frames is usually a flash frame, not a scene. downsample_detection (on by default) analyzes a downscaled copy for speed and applies the result to the full frames, which is why it can chew through big renders.
The honest framing from the pack
The README is unusually candid here: for cut detection alone, the pack's own Cut Detective is substantially more accurate - it runs a neural detector (TransNetV2 or the optional OmniShotCut) and labels dissolve/wipe/fade transitions, not just hard cuts. Chop Cuts' reason to exist is that it's the node that actually splits the clip into per-scene MP4 files with clean sequential filenames (scene_001.mp4, scene_002.mp4...). If you need accurate cut times to feed a VLM prompt generator, use Cut Detective. If you need the scenes exported as files, this is the one. Pick the tool by the job.
Inputs and outputs
The required list is: images, output_folder (default ./output/chop_cuts), base_filename (default scene), fps (default 24), threshold, min_scene_frames, quality (1–100, default 85, for the MP4 encode), detection_method, max_workers (parallel export workers, default 4), downsample_detection, and use_gpu (default true; falls back to CPU if CUDA isn't available).
Outputs: video_paths (the list of written files), output_folder, report (cut locations and timestamps, human-readable), and num_scenes. The report is the part to keep - it's your shot list, and you can feed it into per-scene processing downstream.
Gotchas
- FFmpeg is a hard requirement. The export path shells out to FFmpeg (
subprocessin the source), so a ComfyUI install without FFmpeg on PATH gets a clean error at export time. On most desktop installs it's already there. use_gpudoesn't invent a GPU. It checkstorch.cuda.is_available()and silently falls back to CPU - good behavior, but a 4K batch on CPU detection is slow. Downsample is on by default for a reason.- Threshold is scene-dependent. Fast-cut action footage wants a lower threshold; slow interviews want higher. Run a short pass and read the
reportbefore committing to the full batch.
It's part of TrentNodes - ComfyUI Manager (search "Trent Nodes"), or clone + pip install -r requirements.txt. No model downloads for Chop Cuts itself (transnetv2-pytorch in the pack requirements serves the sibling Cut Detective). For splitting, this is the straightforward option.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| output_folder | STRING | ./output/chop_cuts | — |
| base_filename | STRING | scene | — |
| fps | INT | 241–120 | — |
| threshold | FLOAT | 30.01–100 | — |
| min_scene_frames | INT | 122–1000 | — |
| quality | INT | 851–100 | — |
| detection_method | COMBO | hybrid | 4 options: hybrid, intensity, histogram, adaptive |
| max_workers | INT | 41–16 | — |
| downsample_detection | BOOLEAN | true | — |
| use_gpu | BOOLEAN | true | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| video_paths | STRING | — |
| output_folder | STRING | — |
| report | STRING | — |
| num_scenes | INT | — |