Detector de Cenas
Solte um vídeo. Receba cada corte, com uma miniatura e um timecode por plano — encontrado na sua própria máquina, sem enviar nada.
O seu navegador lê e recodifica o ficheiro. Nenhum pedido o envia para lado nenhum — esta página não tem servidor para onde o enviar.
Perguntas
O vídeo é enviado?
Não. O navegador decodifica localmente, um canvas lê os pixels e o WebAssembly os compara. Nada é enviado a lugar nenhum: esta página não tem servidor para onde enviar. É também por isso que não há limite de tamanho nem fila.
Como ele acha os cortes?
Ele amostra quadros ao longo do vídeo e observa o quanto a imagem muda de uma amostra para a seguinte. Um corte é uma descontinuidade: cor e luminância saltam de uma vez, em vez de derivar como num movimento de câmera ou numa transição. O detector procura esses saltos e devolve as fronteiras entre eles.
Ele pega fusões e fades?
Em parte. Um corte seco é inequívoco e é achado com confiança. Uma fusão lenta é, por construção, uma mudança gradual — a mesma forma de um movimento de câmera —, então pode aparecer um pouco antes, um pouco depois ou fundida com a vizinha. Panorâmicas rápidas também podem ser lidas como cortes. Trate o resultado como uma lista de planos para conferir, não como um veredito.
O que é a nota de qualidade de cada plano?
A mesma pontuação por quadro que o app do Life2Film usa para decidir o que manter: nitidez, exposição, contraste, cor e entropia combinados num número. É uma ordenação aproximada de quais planos merecem um segundo olhar, não um julgamento sobre o que é interessante.
Quanto tempo demora?
Ele percorre o vídeo saltando para cada ponto de amostragem, e cada salto custa dezenas de milissegundos. Um clipe de um minuto leva alguns segundos. Vídeos longos são amostrados de forma mais grossa para a espera continuar razoável: a lista de planos mantém precisão de cerca de meio segundo.
As outras ferramentas
Integre isto no seu projeto
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.