How fast is a reference Short cut? Shot length from reference-ingest
Average shot length is clip duration divided by the shots[] count in a Sume reference-ingest manifest. It is a detector estimate, not an editor's cut list.

To measure the pacing of a reference Short with Sume, run reference ingest and divide the clip duration by the number of entries in shots[]. The docs say shots[] lists frame-exact cuts that two detectors, ffmpeg scdet and PySceneDetect, vote on, and that the list tiles [0, duration] with no gap, so each entry has a start and end. The result is an estimate of average shot length, not an editor's cut list.
Reference ingest is dest first: the docs say it is listed only where SUME_COM_REFERENCE_INGEST_ENABLED permits it, with development auto-on and production opt-in.
What the manifest gives you
Each shot also carries one sharp source-resolution keyframe, a palette, luma and a motion class. Separately, boundaries[] lists visual change candidates scored from 12 samples a second, kept at 0.1 or above; the docs call these mechanical evidence, not editorial shots. A Short is a vertical or square video of up to 3 minutes (YouTube Help, read 2026-10-05), well under the 300 second ingest limit.
| Field | Source | Use for pacing |
|---|---|---|
| shots[] | two detectors vote, tiles [0, duration] | shot count and lengths |
| boundaries[] | 12 samples a second, threshold 0.1 | extra cut candidates, noisier |
| shots[].motion class | per shot | separate static from moving shots |
| audio beats | only when the track is music | align cuts to a beat grid |
Compute it
The helper reads only start and end from each shot. The sample data is invented for illustration and is not a real manifest.
def pacing(shots):
lengths = [s["end"] - s["start"] for s in shots]
return {
"shots": len(lengths),
"avg_seconds": round(sum(lengths) / len(lengths), 2),
"shortest": round(min(lengths), 2),
}
sample = [{"start": 0, "end": 1.4}, {"start": 1.4, "end": 3.0}, {"start": 3.0, "end": 8.0}]
print(pacing(sample))Using it in a remix
If the reference averages about 1.5 seconds a shot, plan your own cut list in that range, remembering that each Timeline 1.0 slot must be at least 0.2 seconds and that starts must begin at 0 and increase. Pacing is one signal. Do not copy another creator's edit shot for shot; the reference is for structure and rhythm.
Limits
A detector can miss soft dissolves and can split a fast whip pan in two, so an average over a few shots is noisy and an average over a whole Short is steadier. The tool reports uncertain[] entries for the cases it wants a second look at. It also does not judge quality; a slow Short can outperform a fast one.
If the source is longer than 300 seconds, the docs say to trim it first, for example with video trim, and ingest the part you care about. A hook of the first few seconds often tells you more about pacing than the full average does, so you can also compute the figure for the shots that start before the 5 second mark and compare it with the whole clip.
Sources
Related posts
More in Use cases
- How to mark a Vimeo video as AI-generated: the steps for a Sume clip
Vimeo's AI label is a per-video checkbox in Settings, Content. The steps, the three cases that need it, and what to log for a Sume-generated clip.
- Hugo: process a Sume image with Fill and a WebP output spec
Hugo reads PNG, JPEG and WebP and can write WebP itself. Save a Sume PNG into the page bundle, then use Fill to cut a 1200x630 card and output WebP.
- HVAC Seasonal Maintenance Reminder as an AI Avatar Video
A seasonal HVAC tune-up reminder rendered as a Sume avatar video: script, seconds per scene, request JSON, and cost per clip and per customer list.
- Replace headline text on a finished ad with Ideogram 4.5 on Sume
Send the finished ad as the first reference to ideogram/ideogram-v4.5 on Sume, name the new headline, omit aspect_ratio. List cost $0.03-$0.22.
Written by Sume