What software breaks a video into individual shots with timings

StoryFolder —

Part of: A client sent you a reference video. Now what?

Last updated: 2 September 2026.

Shot detection does this. You hand a tool the finished video, it finds the frames where one shot ends and the next begins, and you get one ordered segment per boundary with a start, an end, a duration and a representative frame. StoryFolder does it on macOS and Windows from a local file or a public YouTube or Vimeo URL, and gives you elapsed timecodes plus the exact first and last frame number of every shot, which you can then correct by hand where the detector was wrong.

Detection is a first pass, and the design assumes you will fix it. Hard cuts are what it finds reliably. A dissolve spreads its change across many frames and slips under the threshold, the automatic minimum shot length is ten frames, and a cut between two similar-looking shots can pass unnoticed. That is why there is a sensitivity slider, a Split tool and a Join tool, and why correcting the board is a normal part of the job rather than a sign something went wrong.

What does "break a video into shots" mean here?

Editorial boundaries. The frames where the picture cuts, in the video you already have.

Three other things get returned by the same search and none of them is this:

What you might mean What it does Not this because
Splitting a video Cuts a file into equal chunks, or at times you type It knows nothing about where the edits are
Scene or chapter segmentation Groups a long video into topics or chapters A scene is many shots; you want the shots
Script-to-shot generation Proposes shots from written text The footage exists already; nothing needs proposing

One thing to settle up front, because it changes what you can do with the output. StoryFolder's times are elapsed from the first frame of the file you gave it, written HH:MM:SS,mmm. It does not read source timecode off the media, so there is no reel and no start-of-tape offset. If your master starts at 01:00:00:00, that hour is yours to add.

How does StoryFolder detect a cut?

It decodes every frame of the video, turns each one into a compact fingerprint of the picture, compares each frame's fingerprint with the previous frame's, and marks a cut wherever the difference clears a threshold. The sensitivity slider is what moves that threshold. Two extra rules apply: boundaries have to be at least ten frames apart, and the run of cuts is then walked in order to produce the shots.

Assistants that sample the video instead of decoding it work from far less. Google's documentation for Gemini's video understanding says the API samples video at one frame per second, so a two-second shot contributes about two frames to whatever it concludes. Nothing is sampled here, so a shot that is on screen for a third of a second is still compared against its neighbours like any other.

The comparison looks at the picture. That has consequences worth knowing before you rely on it:

  • It works on a rendered file with no project file, no relinking and no timeline. The reference a client sent you is a finished video, and that is the only thing it needs.
  • It is blind to what the shot is of. The fingerprint records that the picture changed. Nothing in the comparison understands the content.
  • Audio plays no part. Detection runs before there is any transcript, so a hard music change or a sound cue will never suggest a boundary.
  • The exposure ramp problem is handled. A gradual brightness shift across a shot does not by itself register as a change, so a slow lighting move is not mistaken for an edit.

There is a second, quieter pass. Inside each shot it has already made, the detector runs again at a higher sensitivity and keeps the hits that fall in the middle of the shot rather than right at either end. Those become the suggested cuts you see later, drawn on the cards once the Split tool is active.

What timings and shot data do you get?

Per shot: the first and last frame number, the start time, the end time, the duration, and the frame the thumbnail is taken from. The card in the app shows the useful ones together, in the shape #12 · 00:34:07 · 2.5s · 818–878, so the shot number, where it starts, how long it runs and its frame range are readable without opening anything.

Across the whole video, the Statistics view gives five numbers: Total shots, Average, Median, Longest and Shortest, with the durations to one decimal place and a properly interpolated median on an even shot count. Those are the numbers behind questions like how many shots are in a 30-second spot and what the average shot length in it is, computed on the reference in front of you instead of quoted from somebody's blog post. They describe whatever shots are currently in scope, so a filtered board gives you statistics for the filtered set.

In the exported spreadsheet the timing columns are Start Timecode, End Timecode, Duration Timecode, First Frame, Last Frame and End Time.

Use the frame numbers when it matters. The timecodes are elapsed and go to the millisecond, which is fine for a document somebody reads, but First Frame and Last Frame are integers and they are exact. There is no SMPTE frames field, no drop-frame handling and no reel, so a frame number is the unambiguous way to tell somebody which frame you mean.

How do sensitivity, suggested cuts, Split and Join work?

In that order, which is also cheapest to most expensive. Fix the board globally first, then take the detector's own guesses, then do the rest by hand.

The sensitivity slider runs 1 to 9 and starts at 5, captioned "Less shots" at one end and "More shots" at the other. It re-cuts the entire board, and it commits when you let go rather than while you drag, so a board of a few hundred shots does not re-run nine times on the way past. Reach for it when the whole video is wrong in one direction. A montage-heavy commercial that came back with half the cards it should have wants more shots; a handheld interview that fragmented into forty cards wants fewer. See adjusting detection sensitivity.

Suggested cuts are those second-pass guesses, drawn as amber ticks across a card's thumbnail. They only render while the Split tool is active, which trips people up: switch the tool on and the ticks appear. Each one takes a single click and splits at the frame the detector picked.

Split and Join handle everything else. Click a thumbnail at the point a cut was missed to split the card there. Hover a card's edge and click to fuse it with its neighbour when the detector invented a boundary that is not real. Manual splits are not subject to the ten-frame minimum, so this is how a three-frame flash cut gets onto the board at all. See splitting and joining shots.

Correcting a board is a scrolling job, not a watching job. You are looking at a wall of thumbnails for two adjacent cards that show the same picture, which means a false cut, or one card whose thumbnail does not match what the next one starts on, which usually means a missed one. That scales with the number of shots rather than with the runtime, which is the only reason it is practical on anything longer than an ad.

Notes are stored against frame numbers rather than against shots, which is what makes re-cutting non-destructive to the writing you have already done. Joining two annotated cards carries both sets of notes onto the merged one. Worth verifying once on your own board before you rely on it in front of a client.

Which cuts will automatic detection miss or misread?

Five kinds, all of them predictable from how the comparison works.

Dissolves and fades. A twenty-frame dissolve changes the picture by a twentieth of the way per frame, and no single one of those steps is a big enough jump to register. There is no separate handling for gradual transitions, so a reference full of them needs a manual pass. This is the big one for commercials and title sequences.

Anything cut faster than ten frames. That is about 0.42 seconds at 24 fps, 0.40 at 25 and 0.33 at 30. The automatic pass will not place two boundaries closer together than that, and there is no control to change it. Rapid-fire montages come back under-counted, and the fix is the Split tool, which has no such floor.

Cuts between shots that look alike. A shot/reverse across a table in one room, or two angles on the same wide landscape, can differ by less than the threshold. The picture barely changed, so nothing fired.

Two more follow from the same mechanism, though nothing in the code addresses them by name.

Flashes, strobes and camera pops. These do the opposite. One frame differs enormously from its neighbour inside a single continuous take, and you get a boundary where there is no edit. Same for a hard whip inside a take.

Heavy motion blur. Frames during a fast pan are smeared into each other, which can suppress a genuine cut in the middle of the move.

None of these is a failure rate. They are consequences of comparing consecutive frames, and they are stable enough that after one video you will know which of them your kind of footage produces. Footage built on long static takes produces few errors of any kind; a montage cut on dissolves produces most of them.

How do you export the corrected timings?

Once the boundaries are right, run the Spreadsheet / Shot List export and you get Shot List.xlsx and Shot List.csv written together, one row per shot. Turn on the Images output in the same run and the XLSX gains an embedded thumbnail per row and a Filename column pointing at the PNG.

The spreadsheet output is on the Pro plan. There is no shot-number column in it, and there is no import path back, so the file is a deliverable rather than something you round-trip.


FAQ

What is the default detection sensitivity? It starts at 5 on a slider that runs from 1 to 9, labelled "Less shots" and "More shots".

Does StoryFolder analyse every frame? Yes. Nothing is sampled, so a shot that lasts a third of a second is compared like any other.

What is the shortest shot automatic detection will find? Ten frames, which is about 0.42 seconds at 24 fps.

Can I create a shot shorter than ten frames? Yes, by splitting one by hand. Manual splits are not subject to the automatic minimum.

Does it detect dissolves and fades? Not reliably. There is no separate handling for gradual transitions, so they need a manual pass with the Split tool.

Why can I not see the suggested-cut ticks? They only render while the Split tool is active. Switch the tool on and the amber ticks appear on the cards.

Which timing values are exact? First Frame and Last Frame, which are integer frame numbers. The timecodes are elapsed from the start of the file, formatted HH:MM:SS,mmm.

Does changing the sensitivity delete my notes? Notes are keyed to frame numbers rather than to shots, which is what makes a re-cut non-destructive to them. Test it once on your own board before relying on it.

← All articles