Bagi Video
Potong video panjang menjadi klip yang dimulai di tempat videonya berubah β bukan setiap tiga puluh detik. Semuanya terjadi di mesin Anda.
Peramban Anda yang membaca dan mengodekan ulang berkas. Tidak ada permintaan yang mengirimnya ke mana pun β halaman ini tidak punya server tujuan unggah.
Pertanyaan
Apa bedanya dengan pembagi video lain?
Kebanyakan memotong setiap N detik, sehingga sebuah klip bisa mulai di tengah kalimat dan berakhir di tengah gerakan. Yang ini mencari potongan yang sudah ada di videonya β pergantian shot β dan menyusun klip dari shot-shot utuh. Anda tetap memilih perkiraan durasinya; batasnya yang jatuh pada perubahan nyata terdekat, bukan pada stopwatch.
Bintang di tiap klip itu apa?
Mesin menilai setiap bingkai contoh dari ketajaman, pencahayaan, kontras, kekayaan warna dan detail, lalu tiap klip mendapat rata-rata berbobot durasi dari shot di dalamnya. Bintangnya relatif terhadap klip terbaik pada video itu, bukan skala mutlak: ia menyarankan ke mana harus melihat lebih dulu, bukan memutuskan apa yang menarik.
Apakah pemangkasan vertikal memotong orang keluar bingkai?
Ia mengambil bagian tengah bingkai, yang benar pada sebagian besar kasus dan salah ketika subjeknya berada di sisi. Di sini belum ada pelacakan wajah, jadi periksa pratinjaunya sebelum diunggah. Bila shot-nya lebar, memangkasnya secara manual biasanya lebih baik.
Apakah videonya diunggah?
Tidak. Peramban mendekodenya, WebAssembly menganalisis bingkainya, dan klipnya dikodekan ulang secara lokal dengan WebCodecs β jalur perangkat keras yang sama yang dipakai peramban Anda untuk memutar video. Tidak ada yang dikirim ke mana pun, dan karena itu pula tidak ada batas paket, antrean atau watermark.
Alat lainnya
Pasang ini di proyek Anda sendiri
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.