← Все инструменты

Разделить видео

Нарежьте длинное видео на клипы, которые начинаются там, где меняется картинка, — а не каждые тридцать секунд. Всё происходит на вашей машине.

Файл читает и перекодирует ваш собственный браузер. Ни один запрос никуда его не отправляет — у этой страницы просто нет сервера, куда его загружать.

Вопросы

Чем это отличается от других разделителей видео?

Большинство режет каждые N секунд, поэтому клип может начаться на середине фразы и оборваться на середине жеста. Этот находит склейки, которые в видео уже есть, и собирает клипы из целых планов. Примерную длину вы по-прежнему выбираете сами; границы просто ложатся на ближайшую настоящую смену, а не на секундомер.

Что означают звёзды у клипов?

Движок оценивает каждый выбранный кадр по резкости, экспозиции, контрасту, цветности и детализации, а клип получает среднее по длительности от планов внутри. Звёзды относительны лучшему клипу этого видео, а не абсолютная шкала: это подсказка, куда смотреть в первую очередь, а не приговор о том, что интересно.

Не обрежет ли вертикальный кроп людей?

Он берёт центр кадра — чаще всего это верно и неверно тогда, когда объект стоит сбоку. Отслеживания лиц здесь пока нет, поэтому проверяйте превью перед публикацией. Если план снят широко, обрезать вручную обычно лучше.

Видео загружается на сервер?

Нет. Браузер декодирует его, WebAssembly анализирует кадры, а клипы кодируются локально через WebCodecs — тот же аппаратный путь, которым браузер проигрывает видео. Никуда ничего не отправляется, и именно поэтому нет ни лимитов тарифа, ни очередей, ни водяных знаков.

Другие инструменты

Build this into your own project

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',
})));

The engine is documented for agents, and every tool page is available as markdown by adding .md to its address.