ИИ-нативный видеоредактор с GPU-ускорением — и с Claude Code прямо в таймлайне.
English version → · Полное руководство по функциям → · Video →
Поддержать меня можно на Boosty: https://boosty.to/triangle_black/
Kadr — многодорожечный видеоредактор (Electron + React + TypeScript), построенный вокруг одной идеи: ИИ-агент должен монтировать видео рядом с вами, на том же таймлайне, теми же инструментами. Нажмите «Claude», напишите «добавь сюда анимированные субтитры» — и смотрите, как это происходит вживую в превью.
- 🎬 Полноценный многодорожечный монтаж — видео/аудио/текстовые дорожки, трим, луп, фейды, связанные AV-клипы, полная история отмен. Скорость ×0.02–×100 Ctrl-драгом за любой край клипа (левый якорит правую границу) с прилипанием к круглым множителям и краям соседних клипов и живым бейджем «×N» у курсора.
- 📥 Медиа отовсюду — перетащите файлы в любое место окна (на дорожку — лягут клипами встык в точку броска, аудио уйдёт на свою дорожку), картинку прямо из браузера (скачается по URL), или нажмите Ctrl+V — вставка из буфера обмена понимает и скопированные файлы, и «Копировать изображение» (например, из Telegram, который фото перетаскиванием не отдаёт). Поддержаны и XDG-портальные перетаскивания из песочных приложений. В медиапанели — множественное выделение и удаление файлов вместе с их клипами на таймлайне (одна отмена).
- ⚡ GPU-композитинг (WebGL2) — превью и есть рендер: один и тот же компоновщик рисует оба, экспорт пиксель-в-пиксель WYSIWYG.
- 🔑 Ключевые кадры везде — позиция, масштаб, поворот, прозрачность, громкость, маски; рабочий процесс в стиле After Effects.
- 🧊 Настоящее 3D — наклоны и глубина клипа, «полёт камеры» целой дорожкой, перспективно-корректные текстуры.
- 🎭 Маски — анимируемые кромки + до 8 фигур с растушёвкой (прямоугольник/эллипс/треугольник, инверсия).
- 🌫️ Эффекты: дымное внешнее сияние и размытие — сияние из клубов billow-шума с рваными щупальцами и искрами; гауссово размытие слоя с ползунком интенсивности; всё параметрично, сохраняется в пресеты и идентично в превью и рендере.
- ⏪ Реверс клипа — правый клик → «Реверсировать»: используемый кусок исходника рендерится задом наперёд (с кэшем), связанная AV-пара переворачивается синхронно, повторный клик мгновенно возвращает оригинал.
- 🔀 26 переходов — 14 переходов наложения (Vegas-стиль: просто перекройте два клипа) и 12 кинематографичных торцевых (вип-паны, зум-блюры, RGB-расхождение, глитч…) со спектральным смазом.
- 🗣️ Локальное распознавание речи — faster-whisper (large-v3) с пословными таймкодами и серьёзной защитой от галлюцинаций (чистый тон обязан дать ноль реплик — закреплено тестами). Редактор SRT/TXT встроен.
- ✨ Авто-субтитры — один диалог: распознавание → анимированные караоке-титры (пословная подсветка, появления поп/подъём/фейд); позиция и размер — мышью прямо в превью.
- 🌊 Неоновая волна — аудио-реактивная светящаяся линия по громкости выделенного диапазона (весь микс или одна дорожка); стиль правится в коде фрагмента, огибающая — точный аналог «Bake Sound» из Blender.
- 🗣️ Озвучка через ElevenLabs — любой текст из корзины, файла с
диска или прямо из поля ввода превращается в аудиоклип на таймлайне.
Длинный текст режется по границам предложений под лимит модели и
сшивается через
previous_text/next_text, так что интонация не рвётся на стыках; опциональное ускорение применяется в том же проходе ffmpeg, что и декодирование, — без лишней генерации. Файл пишется в FLAC и в том же числе каналов, что прислал синтез (моно остаётся моно: апмикс в стерео тихо отнимал 3 дБ). API-ключ никогда не попадает в рендерер и не хранится в проекте — только в<userData>с правами 0600, страница может лишь спросить «ключ задан?». - 🎯 Поиск дефектов озвучки и перегенерация одной фразы — локальный детектор (собственный проект автора, встроен в редактор) размечает на таймлайне подозрительные места фиолетовыми полосами: ЛКМ — «дефект», ПКМ — «не дефект», двойной клик — прослушать фразу. Подтверждённые места перегенерируются целиком одним проходом: новая реплика синтезируется из точной подстроки сценария с контекстом вокруг, подгоняется по темпу и уровню и вшивается равномощным кроссфейдом ровно посередине настоящей тишины между предложениями. Длина измеряется, а не вычисляется, и всё правее сдвигается по всем дорожкам — синхрон с картинкой не разъезжается. Ваши решения копятся и по кнопке переобучают детектор.
- 🪟 Предпросмотр в отдельном окне — кнопка рядом со снимком кадра выносит превью в самостоятельное окно ОС: его можно растянуть, перенести на второй монитор и смотреть во весь экран, пока таймлайн остаётся в основном окне. Переносится тот же самый холст — контекст GPU не пересоздаётся, фрагменты не перезагружаются, пробел и стрелки работают из обоих окон. Второй клик возвращает превью на место.
- 🎨 Интерфейс на дизайн-системе — единая палитра токенов, иконки вместо эмодзи (шрифт эмодзи в каждой ОС свой, и они никогда не выравнивались с текстом), контраст измерен по WCAG 2.2 AA, видимый фокус с клавиатуры, один общий каркас у всех диалогов (Escape, ловушка фокуса, горячие клавиши редактора не срабатывают сквозь диалог) и заметная полоса прокрутки таймлайна с минимальным размером ползунка — на пятнадцатиминутном проекте при большом зуме он раньше вырождался в один пиксель.
- 🧰 Журнал сессии и панель хранилища — две ненавязчивые кнопки в топбаре. Журнал показывает, что именно не получилось (двадцать мест раньше молчали в консоль), живёт только в памяти и гаснет вместе с окном. Хранилище показывает, что редактор оставил на диске, и делит это на восстановимое (прокси, посредники, рендеры фрагментов — их можно чистить точечно по типу и по проекту) и невосстановимое (реверсы, скачанное, озвучки), которое никогда не удаляется одним кликом. Удалите прокси, откройте проект через год — он подхватится сам.
- ⚛️ Remotion-фрагменты — программируемая моушн-графика (React/TSX) как клипы таймлайна. Живое превью с hot reload (никаких рендеров во время итераций!), автоматический режим захвата пикселей для GL-эффектов, 3D и переходов на фрагменте, и ровно один настоящий рендер при экспорте (кэш по хешу содержимого). Код фрагментов лежит в папке проекта — проект переносится вместе со своей графикой.
- 🪟 Видео с альфа-каналом — прозрачные WebM (VP8/VP9+alpha), MOV (ProRes 4444) и HEVC с альфой сохраняют прозрачность и в превью, и в экспорте: под ними видно нижние дорожки, маски и эффекты работают как обычно.
- 🤖 Встроенный Claude Code — настоящая интерактивная сессия Claude в терминальной панели, подключённая к живому проекту через MCP: читает таймлайн, правит клипы, транскрибирует, создаёт и дорабатывает Remotion-фрагменты, пока вы смотрите превью. Панель перетаскивается, растягивается и помнит своё место между запусками.
- 📍 Маркеры таймлайна — клавиша M ставит нумерованный маркер на плейхеде: перетаскивается, удаляется правым кликом, живёт в проекте и виден встроенному Claude («правь от маркера 3 до маркера 4»).
- 📤 Экспорт без компромиссов — видео кодирует ffmpeg x264 с честным битрейтом пресета (кодировщик Chromium игнорировал битрейт и «мылил» картинку — измерено и заменено; кадры передаются в ffmpeg без единой копии), 8-сэмпловый motion blur, frame blending для исходников с «чужим» fps, пресеты YouTube/Shorts/WebM/MP3. По окончании рендера — короткий сигнал.
- 🚀 Быстрый рендер на любом исходнике — покадровая перемотка
<video>стоит ~0.2 с на кадр, и редактор обходит её везде: видео с альфа-каналом (в том числе все прозрачные Remotion-фрагменты) читается через упакованный без потерь посредник, MP4 с индексом в конце файла — по «хвосту», недекодируемые кодеки — через H.264-посредник. Реальный проект на 11 минут с прозрачными фрагментами: 13 минут вместо нескольких часов (58 кадров/с при 1080p60). - 🛟 Забота о работе — фоновые 540p-прокси для превью, автосохранение раз в 5 минут (атомарное, не мешает рендеру и ИИ-сессиям), индикатор несохранённых изменений и «✓ Сохранено», самовосстановление после жёсткого закрытия (никаких зависших процессов), пресеты эффектов и поз, общие для всех проектов, интерфейс RU/EN.
- 🔒 Чистый
npm audit— Electron 42 / Chromium 148, vite 7, свежий tar: 0 известных уязвимостей в зависимостях (спасибо @Antony-hash512 за issue #1).
| Компонент | Для чего | Примечание |
|---|---|---|
| Node.js ≥ 20 | всё | |
| ffmpeg + ffprobe | импорт, аудиомикс, экспорт | любая свежая сборка в PATH |
| python3 + faster-whisper | распознавание речи, авто-субтитры | pip install faster-whisper; модели скачаются при первом запуске |
| Claude Code CLI | панель «Claude» | опционально; использует ваш существующий вход |
| сеть (один раз) | workspace Remotion-фрагментов | ~/kadr-fragments, ~150 МБ |
| ключ ElevenLabs | озвучка | опционально; вводится в настройках озвучки и хранится вне проекта |
| python ≥ 3.11 + torch | поиск дефектов озвучки | опционально; путь к интерпретатору — настройка, без него модуль честно вырождается в обычную озвучку |
git clone https://github.com/HelpFreedom/kadr.git && cd kadr
npm install # postinstall пересоберёт node-pty под Electron
npm run devИмпортируйте медиа, монтируйте, жмите «Экспорт». Для ИИ-ассистента
нажмите «Claude» в топбаре (CLI claude должен быть установлен и
залогинен). Если для
Claude/npm нужен прокси — создайте ~/.config/kadr/claude-env.json:
{ "env": { "HTTPS_PROXY": "http://127.0.0.1:1080", "NO_PROXY": "127.0.0.1,localhost" } }Kadr поднимает локальный мост в рендерер и отдаёт Claude MCP-сервер с пятью инструментами:
| Инструмент | Что делает |
|---|---|
kadr_state |
весь живой проект: дорожки, клипы, пути медиа, транскрипты, пресеты |
kadr_eval |
выполнить JS против API редактора (каждая правка — в истории отмен) |
kadr_snapshot |
снимок кадра в PNG — «глаза» агента: он видит то же, что вы |
kadr_export |
отрендерить проект или диапазон и дождаться файла |
kadr_transcribe |
локальный Whisper по файлу или диапазону таймлайна |
kadr_fragment_create |
создать Remotion-композицию как клип таймлайна |
kadr_neon_wave |
аудио-реактивная волна по диапазону |
kadr_voice_speak |
озвучить текст и положить клип на таймлайн |
kadr_voice_check |
прогнать детектор дефектов по озвучке |
kadr_voice_mark · kadr_voice_verdict |
поставить свою отметку · вынести решение по найденному |
kadr_voice_regenerate |
перегенерировать подтверждённые фразы (только их) |
kadr_voice_learn |
посчитать корпус разметки, а по явному подтверждению — переобучить детектор |
Главный цикл: Claude создаёт фрагмент, правит его TSX обычными файловыми инструментами — vite горячо перезагружает превью за ~2 секунды. Вы даёте правки обычным языком; рендер один — финальный.
E2E-тесты управляют настоящим приложением через Chrome DevTools Protocol:
npx electron-vite dev -- --remote-debugging-port=9777 # терминал 1
node scripts/e2e13.mjs # терминал 2 (и т. д.)Покрыто: переходы, сияние, пресеты, прокси, точность экспорта (PSNR быстрого пути против отката), motion blur, каденс frame blending, MCP-мост, антигаллюцинационный контракт транскрипции, фрагменты и режим захвата, семантика автосохранения, авто-субтитры, дизайн-система (контраст, отсутствие эмодзи, фокус, контракт диалогов), журнал сессии, панель хранилища (обещание «удалили прокси — через год подхватится» проверяется по пикселям), вынесенное окно предпросмотра, озвучка, разметка и перегенерация фраз, формат корпуса обучения.
Ещё четыре проверки — чистая математика без приложения и без сети:
node scripts/check-envelope.mjs # огибающая громкости (аналог Bake Sound)
node scripts/check-ttstext.mjs # разбиение длинного текста по границам
node scripts/check-proxy.mjs # выбор прокси и его запись для Chromium
node scripts/check-voicemap.mjs # пересчёт таймингов после вклейки фразы- FEATURES.md — полное руководство по функциям (1200+ строк).
- CLAUDE.md — карта архитектуры (её же читает Claude Code).
- Black Triangle — владелец репозитория, постановка задач, приёмка, вся содержательная часть по монтажу и звуку.
- Claude (Anthropic) — разработка в паре: реализация, измерения, тесты и эта документация.
