Video Scene Detection & Splitter – Cut Video into Clips avatar

Video Scene Detection & Splitter – Cut Video into Clips

Pricing

from $5.00 / 1,000 sd video minute scanneds

Go to Apify Store
Video Scene Detection & Splitter – Cut Video into Clips

Video Scene Detection & Splitter – Cut Video into Clips

Video scene detection & splitter: finds every shot boundary (scene cut) in MP4, MOV, WebM or MKV files and splits the video into one MP4 clip per scene. Timestamps, thumbnails, CSV, EDL & JSON export. Frame-accurate or fast cuts. From $0.005 per video minute.

Pricing

from $5.00 / 1,000 sd video minute scanneds

Rating

0.0

(0)

Developer

Cemal Atakli

Cemal Atakli

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Share

Video Scene Detection & Splitter – Split Video into Scenes and Clips

Video scene detection that also cuts the video for you. Give it links to video files and it finds every shot boundary (scene cut), returns start/end timestamps with a thumbnail for every scene, and splits the video into scenes: one MP4 clip per scene, with a public download link. Exports a scenes CSV, an EDL (CMX3600) for Premiere Pro / DaVinci Resolve / Avid / Final Cut and a JSON summary per video.

No code, no ffmpeg install, no upload limits of online tools: paste URLs, click Start, download the clips.

What this video splitter does

  1. Downloads each video (up to 2 GB; MP4s with the index at the end are handled) – MP4, MOV, M4V, WebM, MKV, AVI, MPEG-TS.
  2. Scene cut detection: decodes every frame once and scores the change between consecutive frames with ffmpeg's scene filter. A frame whose score passes your threshold starts a new scene – hard cuts, not just keyframes.
  3. Merges scenes shorter than minSceneSeconds (no 3-frame clips from flashes).
  4. For every scene: dataset row (index, start, end, duration, timecodes, frame numbers, cut score), a JPG thumbnail from the first frame of the scene (captured during the scan, no extra cost) and – if splitClips is on – an MP4 clip:
    • Frame-accurate (fastCut: false): re-encoded H.264 (veryfast, CRF 23) + AAC, source resolution capped at 1080p (or 720/480/360p). Each clip starts exactly on the first frame of its shot and ends before the next one.
    • fastCut (default): stream copy, original quality, ~20× faster and free; clips start at the keyframe at or before the cut.
  5. Writes v000-scenes.csv, v000-scenes.edl and v000-summary.json per video to the key-value store.

Use cases

  • Split video into scenes for editing: drop the EDL into Premiere/Resolve and get the cut list on the timeline.
  • Shot boundary detection datasets for ML / computer vision (timestamps + thumbnails + cut scores as JSON/CSV).
  • Cut long recordings, trailers, ads or lectures into short clips for Reels, Shorts and TikTok.
  • Thumbnails / storyboards / contact sheets of every shot for content review and video SEO.
  • Feed scene clips to AI video models or vision LLMs one shot at a time.
  • Ad and broadcast monitoring: detect cuts, count shots, measure average shot length.

Input example

{
"videoUrls": ["https://test-videos.co.uk/vids/sintel/mp4/h264/360/Sintel_360_10s_1MB.mp4"],
"threshold": "0.3",
"minSceneSeconds": "1",
"splitClips": true,
"fastCut": true,
"maxResolution": "1080",
"thumbnails": true,
"maxScenesPerVideo": 500,
"maxDurationMinutes": 240
}

Empty input runs this demo (10 s of the Sintel trailer → 6 scenes, 6 clips, about $0.035).

OptionDefaultWhat it does
threshold0.3Scene sensitivity (0.02–0.95). Lower = more scenes. 0.2 for dark/soft footage, 0.4–0.5 for shaky video
minSceneSeconds1Merge scenes shorter than this
splitClipstrueOne MP4 per scene (off = timestamps, thumbnails and exports only)
fastCuttrueStream copy instead of re-encode (free, keyframe-accurate). Set false for frame-accurate re-encoded clips
maxResolution1080Max short side of re-encoded clips: 1080 / 720 / 480 / 360
thumbnails / thumbnailWidthtrue / 640JPG of the first frame of each scene
maxScenesPerVideo500Cap per video
maxDurationMinutes240Only the first N minutes of each video (0 = no limit)

Output example

One dataset row per scene (view Scenes) plus one row per video (view Videos & exports):

{
"type": "scene", "videoIndex": 0, "sceneIndex": 2,
"startSec": 2.417, "endSec": 4.0, "durationSec": 1.583,
"startTimecode": "00:00:02.417", "endTimecode": "00:00:04.000",
"startFrame": 58, "endFrame": 95, "cutScore": 0.372,
"thumbnailUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/v000-scene-0002.jpg",
"clipUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/v000-scene-0002.mp4",
"clipBytes": 132018, "clipMode": "reencode", "clipWidth": 640, "clipHeight": 360
}
{
"type": "video", "status": "ok", "durationSec": 10.0, "width": 640, "height": 360, "fps": 24.0,
"cutsDetected": 7, "scenesDetected": 6, "scenes": 6, "clips": 6, "minutesScanned": 0.17, "clipMinutesRendered": 0.16,
"csvUrl": ".../v000-scenes.csv", "edlUrl": ".../v000-scenes.edl", "summaryUrl": ".../v000-summary.json",
"charged": {"video-minute-scanned": 1, "clip-minute-rendered": 1}
}

EDL excerpt (CMX3600):

TITLE: Sintel_360_10s_1MB
FCM: NON-DROP FRAME
002 AX V C 00:00:02:10 00:00:04:00 00:00:02:10 00:00:04:00
* FROM CLIP NAME: Sintel_360_10s_1MB

Pricing

Pay per event – you pay only for successful work. Minutes are summed over the whole run and rounded up once.

EventPrice
Video minute scanned – SD source (≤ 576p)$0.005
Video minute scanned – HD / Full HD source (720p, 1080p)$0.02
Video minute scanned – 4K source$0.08
Clip minute rendered – SD output (≤ 576p)$0.03
Clip minute rendered – HD output (720p)$0.10
Clip minute rendered – Full HD output (1080p)$0.20
fastCut clips, thumbnails, CSV/EDL/JSON exports, failed itemsfree
Actor start$0.00005

Scanning includes timestamps, thumbnails and all exports. Re-encoding is real CPU work (x264), which is why clip minutes cost more; use maxResolution: 720 to halve it or fastCut to make clips free.

This ActorTypical scene-detection Actor
Price per video minute$0.005 (SD) / $0.02 (HD), no start fee$0.02 + $0.01 per run
Scene timestamps✓✓
Scene frames / thumbnails✓✓
One MP4 clip per scene✓ (frame-accurate or free fast cut)–
CSV + EDL (CMX3600) + JSON✓–

Examples: a 10-minute 1080p video with timestamps, thumbnails, exports and fast-cut clips = $0.15; with frame-accurate 720p clips = $1.15. The Actor stops gracefully when your maximum total charge is reached.

FAQ

How does the scene detection work? Every frame is decoded and compared with the previous one (ffmpeg scene score, 0–1). A score above threshold is a cut. This finds hard cuts reliably; slow cross-fades and fades to black may be detected as one long scene or need a lower threshold.

Which threshold should I use? 0.3 for most edited content. More scenes: 0.2. Fewer (handheld, fast action): 0.4–0.5. Every scene row has its cutScore, so you can tune after one run.

Frame-accurate vs fastCut? By default clips are stream-copied (fastCut, free). Set fastCut: false to re-encode so each clip starts on the exact first frame of each shot. fastCut copies the original stream without quality loss and for free, but a clip can only start on a keyframe, so it may begin with a fraction of a second (sometimes a few seconds) of the previous shot.

Can I split YouTube or TikTok videos? No. Use direct links to video files you are allowed to process (your CDN, S3, Dropbox direct links, archive.org…). Platform pages are refused for free.

How long can videos be? Files up to 2 GB are downloaded first; larger ones are processed over HTTP. maxDurationMinutes (default 240) caps very long files. Increase the run timeout for long videos – the Actor stops 30 s before the timeout and keeps everything finished so far.

Where are my files? In the run's key-value store (v000-scene-0001.mp4, .jpg, v000-scenes.csv, .edl, v000-summary.json). Every row has public links.

Use with AI agents / Apify MCP

Add this Actor to Claude, Cursor or any MCP client via the Apify MCP server (https://mcp.apify.com, tool gazidev/video-scene-detector). An agent can pass videoUrls, read the Scenes dataset (timestamps, thumbnails, clip links) and then send individual scene clips or thumbnails to a vision model. Via API: POST https://api.apify.com/v2/acts/gazidev~video-scene-detector/run-sync-get-dataset-items?token=… with the input JSON.