Dividir Vídeo
Corte um vídeo longo em clipes que começam onde o vídeo muda — e não a cada trinta segundos. Tudo acontece na sua máquina.
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
Qual a diferença para outros divisores de vídeo?
A maioria corta a cada N segundos, então um clipe pode começar no meio de uma frase e terminar no meio de um gesto. Este acha os cortes que o vídeo já tem — as mudanças de plano — e monta os clipes com planos inteiros. Você continua escolhendo a duração aproximada; os limites é que caem na mudança real mais próxima, em vez de num cronômetro.
O que são as estrelas de cada clipe?
O motor pontua cada quadro amostrado por nitidez, exposição, contraste, cor e detalhe, e cada clipe recebe a média ponderada pela duração dos planos que contém. As estrelas são relativas ao melhor clipe daquele vídeo, não uma escala absoluta: sugerem por onde olhar primeiro, não decretam o que é interessante.
O corte vertical vai cortar pessoas fora?
Ele pega o centro do quadro, o que acerta na maioria das vezes e erra quando o assunto está de lado. Ainda não há rastreamento de rostos aqui, então confira as prévias antes de publicar. Se o plano for muito aberto, geralmente sai melhor cortar à mão.
O vídeo é enviado?
Não. O navegador decodifica, o WebAssembly analisa os quadros e os clipes são recodificados localmente com WebCodecs — o mesmo caminho de hardware que o navegador usa para reproduzir vídeo. Nada é enviado a lugar nenhum, e é por isso que também não há limites de plano, filas ou marca d'água.
As outras ferramentas
Integre isto no seu projeto
Splitting video at its shot changes — 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.
// Shot detection uses the Life2Film engine:
// https://life2film.com/wasm/va_wasm.js
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' });
// pixels: centre-column mean RGB per sampled frame, timestamps in seconds
const { scenes } = JSON.parse(engine.detect_scenes_slick(JSON.stringify({
pixels, timestamps, duration, algo: 'adjacent_diffs',
}))); Build a video splitter that cuts at the shot changes instead of every N seconds, in the browser.
Requirements:
- Every other splitter cuts on a fixed interval, so clips open mid-gesture. Find the cuts the video
already has and build clips out of whole shots.
- Detect shots with the "life2film-engine" npm package (WebAssembly): sample frames, take the mean RGB
of the centre column, pass pixels + timestamps to detect_scenes_slick.
- Sampling rate decides accuracy, not the algorithm. At 2 samples/second boundaries land 1-3 seconds
out and all sixteen algorithms are wrong the same way; at 10/second they land on the frame. Use a
coarse pass to find candidates, then re-sample tightly around each one at ten times the resolution.
- Group whole shots into clips near the target length; never cut inside a shot. A shot longer than the
target becomes its own clip. Absorb a short tail into the previous clip rather than leaving a
two-second orphan.
- Rank clips by picture quality using score_frame, taking the MEDIAN score per shot (one bad frame
should not sink a good shot) and weighting by duration when combining shots.
- Encode with "mediabunny", trim: {start, end} per clip, and offer a 9:16 crop via
video: { width: 1080, height: 1920, fit: 'cover' }.
- Cap the input length — every sample is a seek costing tens of milliseconds.
Reference implementation: https://life2film.com/tools/video-splitter/
The engine is documented for agents, and every tool page is available as
markdown by adding .md to its address.