[{"data":1,"prerenderedAt":393},["ShallowReactive",2],{"blog-post-split-video-by-scene-changes-in-browser":3},{"id":4,"title":5,"body":6,"date":376,"description":377,"draft":378,"extension":379,"image":380,"imageAlt":30,"lang":381,"meta":382,"navigation":383,"path":384,"seo":385,"stem":386,"tags":387,"__hash__":392},"blog\u002Fblog\u002Fsplit-video-by-scene-changes-in-browser.md","How to Split a Video by Scene Changes in Your Browser",{"type":7,"value":8,"toc":353},"minimark",[9,13,22,25,32,37,40,83,89,92,96,103,106,124,127,131,134,137,142,145,148,159,162,166,169,177,180,184,187,190,194,197,200,204,207,210,213,216,219,222,225,228,232,235,242,248,261,265,268,271,274,278,281,284,287,307,310,314,317,331,334,337,341,344,347],[10,11,12],"p",{},"Splitting a video at known timestamps is straightforward. Finding those\ntimestamps automatically is the harder problem: a tool has to decide whether a\nlarge visual change is a real shot boundary, a camera flash, fast motion, or\nsimply a new frame inside the same scene.",[10,14,15,16,21],{},"The ",[17,18,20],"a",{"href":19},"\u002Fscene-splitter\u002F","ArtPlayer Scene Splitter"," detects likely hard cuts,\nturns the detected ranges into separate MP4 clips, and lets you download one\nscene or every scene in a ZIP archive. Analysis, export, preview, and packaging\nall happen locally in the browser, so the selected video does not need to be\nuploaded to a processing server.",[10,23,24],{},"This guide explains how to use it, how its shot-detection method works, and\nwhere automatic scene splitting needs human review.",[10,26,27],{},[28,29],"img",{"alt":30,"src":31},"A local video timeline divided into separate scene clips by automatic cut markers","\u002Fassets\u002Fblog\u002Fsplit-video-by-scene-changes-in-browser\u002Fcover.webp",[33,34,36],"h2",{"id":35},"how-to-split-a-video-by-scene-changes","How to split a video by scene changes",[10,38,39],{},"The basic workflow is:",[41,42,43,51,54,70,77,80],"ol",{},[44,45,46,47,50],"li",{},"Open the ",[17,48,49],{"href":19},"Scene Splitter"," in a current desktop browser.",[44,52,53],{},"Choose a local video file or load the sample.",[44,55,56,57,61,62,65,66,69],{},"Select ",[58,59,60],"strong",{},"Low",", ",[58,63,64],{},"Standard",", or ",[58,67,68],{},"High"," detection sensitivity.",[44,71,72,73,76],{},"Choose ",[58,74,75],{},"Detect scenes"," and keep the tab open during analysis.",[44,78,79],{},"Review the detected clips and their thumbnails.",[44,81,82],{},"Preview and download an individual scene, or save all scenes as a ZIP.",[10,84,85,86,88],{},"Start with ",[58,87,64],{}," sensitivity. It is a better baseline than immediately\nusing High, because detecting more visual changes is not the same as finding\nmore correct cuts.",[10,90,91],{},"If a video has only one continuous shot, the correct result may be one scene.\nThe tool reuses the original file for that full-length result instead of\nperforming an unnecessary export.",[33,93,95],{"id":94},"what-is-a-scene-change","What is a scene change?",[10,97,98,99,102],{},"In editing terminology, this tool is primarily looking for a ",[58,100,101],{},"shot boundary",":\nthe point where one continuous camera shot ends and another begins. A direct\ncut from an indoor close-up to an outdoor wide shot is a strong example.",[10,104,105],{},"Not every visible change is a boundary. These events can alter much of a frame\nwithout starting a new shot:",[107,108,109,112,115,118,121],"ul",{},[44,110,111],{},"a flash or strobe;",[44,113,114],{},"a fast camera pan;",[44,116,117],{},"a large object moving close to the camera;",[44,119,120],{},"a screen filling with smoke, water, or particles; and",[44,122,123],{},"a sudden exposure or lighting adjustment.",[10,125,126],{},"Gradual transitions are a different challenge. A fade, dissolve, or wipe\nspreads the change across multiple frames, so it may not create one strong\nlocal peak. The current Scene Splitter is designed mainly for hard cuts and\nshould not be presented as a frame-perfect detector for every transition type.",[33,128,130],{"id":129},"how-browser-scene-detection-works","How browser scene detection works",[10,132,133],{},"Uploading every frame to a remote vision service would add transfer time and a\ndifferent privacy boundary. Instead, ArtPlayer performs a lightweight visual\nanalysis on the device.",[10,135,136],{},"The process has four main stages.",[138,139,141],"h3",{"id":140},"_1-sample-small-frames","1. Sample small frames",[10,143,144],{},"The browser seeks through the selected video and draws sampled frames to a\nsmall 160 × 90 canvas. Analyzing this reduced frame is much less expensive than\ncomparing every source pixel at full resolution.",[10,146,147],{},"Sampling frequency changes with duration:",[107,149,150,153,156],{},[44,151,152],{},"videos up to 2 minutes use an interval of about 0.35 seconds;",[44,154,155],{},"videos from 2 to 10 minutes use about 0.5 seconds; and",[44,157,158],{},"longer supported videos use about 0.75 seconds.",[10,160,161],{},"This is a deliberate tradeoff. Denser sampling can locate changes more closely\nbut requires more seeks and frame comparisons. Wider intervals keep longer\nvideos practical inside a browser tab.",[138,163,165],{"id":164},"_2-measure-visual-difference","2. Measure visual difference",[10,167,168],{},"For each pair of sampled frames, the detector converts selected pixels to\nluminance and combines two signals:",[107,170,171,174],{},[44,172,173],{},"the average pixel-level brightness difference; and",[44,175,176],{},"the difference between 16-bin luminance histograms.",[10,178,179],{},"Pixel differences respond to local changes, while a histogram provides a\ncoarser description of how the brightness distribution changed across the\nframe. Combining them is more useful than trusting either signal alone, but it\nis still visual difference detection rather than semantic understanding. The\ndetector does not know that a frame contains the same person, location, or\nstory event.",[138,181,183],{"id":182},"_3-select-likely-cut-points","3. Select likely cut points",[10,185,186],{},"A large difference is not automatically accepted. The detector looks for a\nlocal peak that exceeds the selected sensitivity threshold and keeps likely\ncuts at least one second apart.",[10,188,189],{},"It also checks for an isolated flash pattern: two adjacent comparisons can\nboth look very different even though the frames immediately before and after\nthe flash remain similar. That pattern is skipped to reduce false cuts caused\nby brief flashes.",[138,191,193],{"id":192},"_4-refine-and-export-the-ranges","4. Refine and export the ranges",[10,195,196],{},"After coarse candidates are found, the browser refines their timing and builds\nhalf-open scene ranges from the start of the video to its end. The resulting\nranges are exported locally as MP4 files, then displayed as independent\npreview cards.",[10,198,199],{},"The exported range is the result that matters. Always play several seconds on\nboth sides of a boundary; a plausible thumbnail does not prove that the cut is\naccurate enough for the intended edit.",[33,201,203],{"id":202},"which-sensitivity-should-you-choose","Which sensitivity should you choose?",[10,205,206],{},"Sensitivity changes the minimum difference required to consider a sample a\ncut candidate.",[138,208,60],{"id":209},"low",[10,211,212],{},"Low requires the strongest visual change. Use it when rapid motion, lighting\neffects, gameplay, or screen animation creates too many false cuts. It can miss\nsubtle real boundaries.",[138,214,64],{"id":215},"standard",[10,217,218],{},"Standard is the recommended starting point for ordinary edited footage with\nclear hard cuts. Review the result before changing the setting.",[138,220,68],{"id":221},"high",[10,223,224],{},"High accepts smaller visual changes. Use it when Standard misses genuine cuts\nbetween visually similar shots. Expect to remove more false positives when the\nvideo contains movement, zooms, or changing illumination.",[10,226,227],{},"A useful test is to choose a one-minute section whose real cuts you can count\nmanually. Run all three settings on that same source, then compare detected\nboundaries rather than choosing the setting that returns the most clips.",[33,229,231],{"id":230},"why-a-detector-can-miss-or-invent-a-cut","Why a detector can miss or invent a cut",[10,233,234],{},"Automatic shot detection has two main error types.",[10,236,237,238,241],{},"A ",[58,239,240],{},"missed cut"," happens when two adjacent shots look visually similar or when\na gradual transition does not create a sharp enough difference. Raising\nsensitivity may help, but it can also introduce false cuts elsewhere.",[10,243,237,244,247],{},[58,245,246],{},"false cut"," happens when a large change occurs inside one continuous shot.\nFlashes, fast pans, full-screen overlays, and sudden lighting changes are common\ncauses. Lower sensitivity may help. The flash filter handles one specific\npattern, not every possible lighting effect.",[10,249,250,251,255,256,260],{},"If one boundary needs exact manual placement, use the ",[17,252,254],{"href":253},"\u002Fsplit-video\u002F","Split Video","\nor ",[17,257,259],{"href":258},"\u002Ftrim-video\u002F","Trim Video"," tool after identifying the approximate scene.\nAutomatic detection is best used to reduce repetitive work, with a person\nreviewing the final boundaries.",[33,262,264],{"id":263},"privacy-and-local-processing","Privacy and local processing",[10,266,267],{},"Selecting a video gives the page permission to read that file in the current\nbrowser session. ArtPlayer uses the local video element, canvas, browser media\ncodecs, and in-memory object URLs to analyze and export the clips.",[10,269,270],{},"The source video is not sent to an ArtPlayer processing API. Normal website\nassets and privacy-safe aggregate telemetry may still use the network, but the\nmedia content selected for scene detection remains on the device.",[10,272,273],{},"Local processing also means the device carries the workload. Browser codec\nsupport, available memory, video duration, and the number of exported scenes\ncan all affect whether the job completes reliably.",[33,275,277],{"id":276},"current-limits-and-compatibility","Current limits and compatibility",[10,279,280],{},"The Scene Splitter currently accepts videos up to 30 minutes and returns at\nmost 60 scenes. Those limits keep seeking, thumbnails, encoded clips, and ZIP\ncreation within a bounded browser workload.",[10,282,283],{},"A familiar extension does not guarantee compatibility. An MP4 is a container,\nand the video codec inside it still has to be decodable by the browser. Export\nalso depends on the codecs and dimensions the browser can encode.",[10,285,286],{},"For the most predictable test:",[41,288,289,292,295,298,301,304],{},[44,290,291],{},"Use a current desktop browser.",[44,293,294],{},"Start with a short conventional MP4.",[44,296,297],{},"Close other media-heavy tabs before processing a large file.",[44,299,300],{},"Preview the beginning and end of several exported scenes.",[44,302,303],{},"Download a scene and confirm that it opens outside the browser.",[44,305,306],{},"Check the ZIP when downloading all scenes, not only the on-page previews.",[10,308,309],{},"Chrome, Edge, Safari, and Firefox can expose different codec and media-seeking\nbehavior. A successful run in one browser does not prove the same input will\nwork in every other browser.",[33,311,313],{"id":312},"how-to-evaluate-detection-quality","How to evaluate detection quality",[10,315,316],{},"For a repeatable evaluation, prepare a short video with known boundaries and\nrecord four values:",[107,318,319,322,325,328],{},[44,320,321],{},"the number of real hard cuts;",[44,323,324],{},"correctly detected cuts;",[44,326,327],{},"missed cuts; and",[44,329,330],{},"false cuts.",[10,332,333],{},"Also note the sensitivity, browser, operating system, source codec, resolution,\nand frame rate. Test flashes and gradual transitions separately instead of\nmixing every failure mode into one accuracy claim.",[10,335,336],{},"Do not publish a universal accuracy percentage from one sample. Detection\nquality depends heavily on the footage. A transparent report showing which\ncuts were found, missed, or falsely added is more useful than a single score.",[33,338,340],{"id":339},"when-automatic-scene-splitting-is-useful","When automatic scene splitting is useful",[10,342,343],{},"Scene detection works especially well as a first pass for footage with clear\nhard cuts, including edited tutorials, interviews with camera switches,\ncompilations, trailers, and presentation recordings that move between\ndistinct visual sections.",[10,345,346],{},"It is less suitable when every boundary must already be frame-perfect, when a\nvideo relies mainly on dissolves and fades, or when continuous motion regularly\nchanges the entire frame.",[10,348,349,350,352],{},"Use the ",[17,351,20],{"href":19}," to find and export the\nobvious shot ranges, review every result, and finish any precision adjustments\nwith a manual splitting tool. The goal is not to remove editorial judgment; it\nis to make the first pass faster without uploading the source video.",{"title":354,"searchDepth":355,"depth":355,"links":356},"",2,[357,358,359,366,371,372,373,374,375],{"id":35,"depth":355,"text":36},{"id":94,"depth":355,"text":95},{"id":129,"depth":355,"text":130,"children":360},[361,363,364,365],{"id":140,"depth":362,"text":141},3,{"id":164,"depth":362,"text":165},{"id":182,"depth":362,"text":183},{"id":192,"depth":362,"text":193},{"id":202,"depth":355,"text":203,"children":367},[368,369,370],{"id":209,"depth":362,"text":60},{"id":215,"depth":362,"text":64},{"id":221,"depth":362,"text":68},{"id":230,"depth":355,"text":231},{"id":263,"depth":355,"text":264},{"id":276,"depth":355,"text":277},{"id":312,"depth":355,"text":313},{"id":339,"depth":355,"text":340},"2026-08-15","Learn how browser-based shot detection finds hard cuts, filters flashes, and exports separate MP4 scenes locally without uploading your video.",false,"md","\u002Fassets\u002Fblog\u002Fsplit-video-by-scene-changes-in-browser\u002Fog.webp","en",{},true,"\u002Fblog\u002Fsplit-video-by-scene-changes-in-browser",{"title":5,"description":377},"blog\u002Fsplit-video-by-scene-changes-in-browser",[388,389,390,391],"guide","video","scene-detection","privacy","z2wndhXx58yiuynC_LnKQ8ciiXMtToDT0CbOeGKsFvM",1787284600637]