Sahne Bulucu
Bir video bırakın. Her kesmeyi, her plan için bir küçük resim ve zaman koduyla alın — kendi makinenizde bulunur, hiçbir şey yüklenmeden.
Dosyayı sizin tarayıcınız okur ve yeniden kodlar. Hiçbir istek onu bir yere göndermez — bu sayfanın yükleme yapacağı bir sunucu yok.
Sorular
Video yükleniyor mu?
Hayır. Tarayıcı videoyu yerelde çözer, bir tuval pikselleri okur ve WebAssembly bunları karşılaştırır. Hiçbir şey hiçbir yere gönderilmez: bu sayfanın gönderecek bir sunucusu yok. Boyut sınırı ve kuyruk da bu yüzden yok.
Kesmeleri nasıl buluyor?
Video boyunca kareler örnekler ve görüntünün bir örnekten diğerine ne kadar değiştiğine bakar. Kesme bir süreksizliktir: renk ve parlaklık, bir kaydırma ya da geçişteki gibi süzülmek yerine tek adımda sıçrar. Bulucu bu sıçramaları arar ve aralarındaki sınırları bildirir.
Geçişleri ve kararmaları yakalar mı?
Kısmen. Sert kesme apaçıktır ve güvenilir biçimde bulunur. Yavaş bir geçiş, yapısı gereği kademeli bir değişimdir — kamera hareketiyle aynı biçim — dolayısıyla biraz erken, biraz geç görünebilir ya da komşusuyla birleşebilir. Hızlı kaydırmalar da kesme gibi okunabilir. Sonucu denetlenecek bir plan listesi sayın, bir hüküm değil.
Her planın yanındaki kalite puanı ne?
Life2Film uygulamasının neyi tutacağına karar verirken kullandığı kare başına puanın aynısı: keskinlik, pozlama, kontrast, renklilik ve entropi tek bir sayıda birleşir. Hangi planlara ikinci kez bakmaya değeceğine dair kaba bir sıralamadır, neyin ilginç olduğuna dair bir yargı değil.
Ne kadar sürer?
Her örnekleme noktasına atlayarak videoyu tarar ve her atlama onlarca milisaniyeye mal olur. Bir dakikalık klip birkaç saniye sürer. Uzun videolar, bekleme makul kalsın diye daha seyrek örneklenir: plan listesi yaklaşık yarım saniyelik bir isabeti korur.
Diğer araçlar
Kendi projenize ekleyin
Finding every cut in a video — the same way this page does it, on the user's machine, with no server. Take the code, or hand the prompt to a coding agent.
const engine = await import('https://life2film.com/wasm/va_wasm.js');
await engine.default({ module_or_path: 'https://life2film.com/wasm/va_wasm_bg.wasm' });
// 31 features per frame, from RGB24 pixels
const scored = JSON.parse(engine.score_frame(width, height, rgb24, timestamp, null)); Add shot-boundary detection to my project, running in the browser without uploading the video.
Requirements:
- Use the "life2film-engine" npm package (WebAssembly) for detection and the browser's own decoder for
frames: <video> plus a canvas works everywhere and needs no WebCodecs.
- Sample frames at ~64 px wide, take the mean RGB of the centre column, and pass pixels + timestamps
to detect_scenes_slick.
- Sampling rate decides accuracy far more than the algorithm does. Measured against a video with cuts
at known times: 2 samples/second put boundaries 1-3 seconds out and all sixteen algorithms failed
the same way; 10/second put them on the frame. Do a coarse pass, then refine around each candidate
at ten times the resolution and take the largest frame-to-frame change.
- Show a thumbnail per shot. The fastest way to check a shot list is to look at it, and a boundary
that is wrong is obvious in a picture and invisible in a number.
- Score each shot with score_frame and take the median, not the mean.
- Export as EDL, OTIO, FCPXML, Audacity labels, CSV or JSON, at a frame rate the user chooses.
- Cap the input length: each sample is a seek costing tens of milliseconds.
Reference implementation: https://life2film.com/tools/scene-detector/
The engine is documented for agents, and every tool page is available as
markdown by adding .md to its address.