Об этом проекте

Null Motion — это самодостаточное веб-приложение для редактирования длинных видео в вертикальные клипы. Оно вырезает паузы, добавляет субтитры к словам и позволяет просматривать правки на таймлайне. Ключевая функция — страница предпросмотра, где поверх воспроизводится готовый рекламный ролик с моушн-графикой, а под ним показаны простые черно-белые черновики HyperFrames, из которых он вырос, — по одному черновику на секцию (Hook, Reveal, App, End card), все синхронизированы покадрово с фильмом. По черновикам движется курсор воспроизведения; активная секция выделяется оранжевой рамкой, остальные зациклены. Экспорт в один клик рендерит фильм и черновики в MP4 с высоким битрейтом и аудиодорожкой фильма, используя WebCodecs и mp4-muxer, захватывая каждый декодированный кадр без записи в реальном времени, поэтому кадры не теряются. В репозитории есть три демонстрационных референса (Infinite Global payments 0:30, SaaS Launch sequence 1:02, Motion study 08 0:03) с готовыми к воспроизведению черновиками. Для быстрого запуска нужен только Node.js 22+; зависимости устанавливать не нужно, ключи не требуются. Для экспорта нужен Chrome или Edge. Рабочий процесс: scripts/plan-sections.mjs разбивает референсы на 3–8 секций по реальным сменам сцен с помощью детекции сцен FFmpeg; public/drafts.mjs — это небольшой движок HyperFrames, где каждый черновик — это HTML-сцена 640×360 на паузе таймлайна GSAP, описанная битами (текст, логотип, телефон, окно, ввод, чат, карточки, список, график, облако). Воспроизведение управляет таймлайном каждого черновика от часов фильма. Можно использовать собственные референсы с Python, FFmpeg и ffprobe: импорт через scripts/import-motionclone.py, затем планирование секций. Импортированные медиафайлы остаются локально в .local-media/ и public/references/ (игнорируются Git) и имеют приоритет над демонстрационными. Импортер не разрушает данные, извлекает миниатюры, связывает исходные видео, а сервер передает байтовые диапазоны, поэтому перемотка не загружает видео целиком в память. Необязательные переменные окружения PORT и HOST меняют адрес привязки. Структура проекта: public/demo.html, demo.mjs, demo.css (страница предпросмотра и экспортер), public/drafts.mjs (движок черновиков), public/scraps.mjs (ручные черновики для референса Interface), public/editor.* (более ранний редактор запуска на /editor), showcase/ (три опубликованных референса), scripts/ (импорт, секции, демонстрация, формы волн, проверки), server.js и media.js (статический сервер, потоковая передача медиа, извлечение аудио), test/ (тесты сервера, медиа, редактора). Команды разработчика: npm run dev (перезапуск при изменениях), npm run check (проверки файлов интерфейса), npm test (node --test). Примечания: браузер обращается только к собственному origin проекта; генерация, сервисы рендеринга и Premiere не подключены. Черновики создаются вручную, а не с помощью ИИ. Более ранний редактор запуска (таймлайн референса, обрезка, оверлей бренда) находится на /editor, а оригинальная галерея шаблонов Null Motion — на /index.html. Встроенные GSAP и mp4-muxer сохраняют свои лицензии (см. THIRD_PARTY_NOTICES.md). Брендовые изображения и референсные материалы принадлежат их владельцам. Общая лицензия с открытым исходным кодом не выбрана.