- Дата публикации
Doza Assist: ИИ-конвейер, который монтирует ваши видео за 20 минут вместо 6 часов
Что нового
Doza Assist — это скриптовый конвейер для автоматического монтажа длинных видео (30–60+ минут) в готовые таймлайны для DaVinci Resolve и соцсетей.
Ключевые факты и цифры:
- Время экономии: из 60 минут сырого видео получается 15‑минутный ролик примерно за 20 минут обработки вместо 4–6 часов ручного монтажа.
- Автоматическая нарезка и ускорение: сцены размечаются как интересные / умеренные / низкие / скучные и получают скорость от 1x до 6x.
- Три режима работы:
- build — немые сборки/мастерские, ускорение до 6x + фоновая музыка.
- unboxing — обзоры и туториалы с голосом, исходная озвучка сохраняется, скучные фрагменты вырезаются по тишине и статике.
- reels — вертикальные 9:16 клипы для Shorts/Reels/клипов на базе уже готового анализа.
- Полный автоматический цикл одной командой:
- анализ видео → нарезка → таймлайн Resolve → рендер 4K H.265 → загрузка на YouTube;
- отдельный путь для вертикальных клипов + публикация в Instagram и Facebook.
- Поддерживаемые платформы и форматы:
- YouTube (основное видео 4K H.265, Shorts);
- Instagram Reels и фото‑карусели (с авто‑перекодированием HEVC → H.264);
- Facebook Reels и фотопосты.
- Под капотом — связка из:
- Qwen2.5‑VL‑7B (vision‑language‑модель, ~4,7 ГБ Q4_K_M GGUF);
- CLIP ViT‑B/32 для текст‑картинка сопоставления;
- ResNet‑50 для извлечения визуальных фич и детекции похожих сцен;
- FFmpeg с NVENC для ускоренного рендеринга и анализа аудио/статичных кадров.
По сути, это не отдельное приложение, а хорошо собранный Python‑конвейер, который превращает папку с сырыми роликами в монтажный проект + готовые файлы и загружает их в соцсети.
Как это работает
Общая архитектура
Пайплайн разбит на пять основных стадий плюс отдельный маршрут для вертикальных клипов:
-
AI‑анализ (Stage 1)
- Скрипт
analyze_advanced5.pyкаждые 2 секунды вынимает кадр из видео. - Qwen2.5‑VL‑7B подписывает кадры, оценивает "интересность" (рейтинг 1–10), классифицирует сцены.
- ResNet‑50 извлекает 2048‑мерные визуальные признаки.
- CLIP ViT‑B/32 создаёт семантические эмбеддинги для сравнения сцен.
- Считаются перцептуальные хэши для поиска дубликатов.
- Кадры группируются в сцены, каждая сцена получает класс (boring/low/moderate/interesting) и скорость воспроизведения (1x–6x).
- Результаты сохраняются в
scene_analysis_*.json.
- Скрипт
-
Извлечение клипов (Stage 2)
- Скрипт
extract_scenes.pyчитает JSON‑анализ и режет исходные видео на клипы. - FFmpeg с NVENC рендерит каждый фрагмент с заданной скоростью.
- Для ускорений >1x используется цепочка
atempo, чтобы корректно обработать звук (в build‑режиме звук всё равно глушится). - Ключевые моменты помечаются как
*_showcase_*.movдля тизеров. - Все клипы попадают в
ai_clips/{video_stem}/.
- Скрипт
-
Сборка таймлайна (Stage 3)
- Скрипт
export_resolve.pyсобирает основной таймлайн в формате FCPXML:timeline_davinci_resolve.fcpxml. - Структура: тизер → интро → основная часть → аутро.
- Добавляются переходы (cross‑dissolve), водяной знак, музыка и уровни громкости в зависимости от режима.
- Скрипт
-
DaVinci Resolve (Stage 4)
- FCPXML импортируется в DaVinci Resolve.
- Скрипт
apply_lut_resolve.pyопционально применяет LUT к медиа в Media Pool (например, Filmic Pro deLOG). render_youtube.pyрендерит финальный MP4 в H.265 4K с битрейтом ~30 Мбит/с.
-
Загрузка на YouTube (Stage 5)
upload_youtube.pyзагружает ролик в YouTube через YouTube Data API v3 и OAuth 2.0.- Поддерживается загрузка в плейлист, добавление обложки и метаданных.
-
Параллельный маршрут для Reels / Shorts
export_reels.pyсобирает отдельный FCPXML‑таймлайнtimeline_reels.fcpxmlв вертикальном формате 9:16 (1080×1920).render_reels.pyрендерит вертикальный ролик в H.265 (NVIDIA NVENC, ~15 Мбит/с).upload_youtube.py --shortsзагружает его как YouTube Shorts.upload_instagram.py --videoиupload_facebook.py --videoотправляют ролик в Instagram Reels и Facebook Reels через Meta Graph API.
-
Фото‑контент
- Скрипты
upload_instagram.py --photoиupload_facebook.py --allпубликуют фото‑карусели и многокадровые посты. - Для Instagram конвейер при необходимости перекодирует HEVC в H.264 для совместимости.
- Скрипты
Режимы пайплайна
Режим выбирается через project_config.json (ключ "mode") или флаг командной строки --mode (CLI имеет приоритет).
Build
Для немых сборок, DIY, мастерских, где важна картинка и ритм, а не голос.
- Аудио в исходниках глушится, поверх кладётся фоновая музыка.
- Скорость каждого фрагмента меняется от 1x до 6x в зависимости от оценки сцены.
- "Скучные" фрагменты могут быть сильно ускорены или вырезаны.
- Используется только визуальный анализ (LLM + компьютерное зрение), голос не учитывается.
- Генерируется тизер в начале ролика.
Unboxing
Для обзоров, распаковок, туториалов с голосом, где важна речь и детали.
Дополнительная логика:
-
Анализ аудио и движения
analyze_audio.pyзапускаетffmpeg silencedetect:- тишина — ниже
-35 dBдольше3.0секунд (значения настраиваются);
- тишина — ниже
- параллельно
ffmpeg freezedetectищет статичные кадры при пороге движения0.02. - LLM‑подсказка настраивается на поиск качественной озвучки, моментов "распаковки", крупняков и т.п.
- Скорость всех сцен принудительно фиксируется в
1.0x.
-
Маркировка скучных фрагментов
- Если тишина и статичное видео перекрываются минимум на 60% длительности сцены, она помечается как boring и вырезается.
- Остальные сцены остаются в реальном времени с исходным звуком.
-
Рендер и таймлайн
- FFmpeg рендерит без ускорения.
- В таймлайне сохраняется оригинальная дорожка с голосом, фоновая музыка не добавляется.
- Тизер, интро, аутро и водяной знак всё равно присутствуют.
Пример конфигурации в project_config.json:
{ "mode" : " unboxing " ,
"unboxing" : {
"keep_audio" : true ,
"keep_speed" : true ,
"silence_threshold_db" : -35 ,
"silence_min_duration" : 3.0 ,
"motion_threshold" : 0.02 ,
"boring_requires_both" : true
}
}
Ключи:
keep_audio— сохранять оригинальный голос в клипах (по умолчаниюtrue).keep_speed— фиксировать все сцены на 1.0x (без ускорения, по умолчаниюtrue).silence_threshold_db— порог тишины в децибелах.silence_min_duration— минимальная длительность тишины для флага.motion_threshold— порог для freezedetect (0 — полностью идентичные кадры).boring_requires_both— требовать одновременно тишину и статику (true), иначе достаточно одного признака.
Reels
Режим для генерации вертикальных клипов на основе уже проведённого анализа.
- Анализ (Stage 1–2) пропускается, используются готовые
scene_analysis_*.jsonи клипы изai_clips/. export_reels.pyсобираетtimeline_reels.fcpxmlс вертикальным 9:16 кадром.- Для музыки берутся треки из
assets/music-teaser/.
Пример конфигурации:
{ "mode" : " reels " }
Сравнение режимов по функциям
-
Build
- AI‑классификация сцен (Qwen2.5‑VL) — да.
- Ускорение 1x–6x — да.
- Детекция тишины и статики — нет.
- Оригинальный голос — нет.
- Фоновая музыка — да.
- Тизер — да.
- Вертикальный 9:16 — нет.
- Поиск дубликатов — да.
- Водяной знак — да.
-
Unboxing
- AI‑классификация сцен — да.
- Ускорение 1x–6x — нет, всё 1x.
- Детекция тишины и статики (ffmpeg) — да.
- Оригинальный голос — да.
- Фоновая музыка — нет.
- Тизер — да.
- Вертикальный 9:16 — нет.
- Поиск дубликатов — да.
- Водяной знак — да.
-
Reels
- Переиспользует существующий анализ.
- Скорость 1.0x.
- Вертикальный 9:16 кроп — да.
- Фоновая музыка — да (teaser‑треки).
- Водяной знак — да.
Система классификации сцен
Каждой сцене присваивается класс и скорость:
- Interesting — 1.0x, ключевые моменты, экшен, демонстрация результата.
- Moderate — 2.0x, основное содержание, где важен контекст.
- Low — 4.0x, фоновая деятельность, подготовка, переходы.
- Boring — 6.0x, повторяющиеся и малополезные фрагменты, могут быть ускорены или вырезаны.
- Skip — не экспортируется.
Пример компрессии:
- Исходное видео: 45,3 минуты
- Interesting: 1 сцена @1x → 0,6 мин
- Moderate: 35 сцен @2x → 5,2 мин
- Low: 31 сцена @4x → 2,4 мин
- Boring: 12 сцен @6x → 0,5 мин (исключены)
- Итоговый таймлайн: 14,7 минуты (сжатие на 64%).
Что это значит для вас
Кому это реально поможет
-
YouTube‑авторы, снимающие сборки, DIY и мастерские
- У вас лежат часы сырья с камеры или телефона.
- Руки не доходят пересмотреть всё и собрать динамичную версию.
- В build‑режиме Doza Assist сам просматривает материал, ускоряет рутину до 6x, добавляет музыку и собирает монтажный проект.
- Вы тратите время не на нарезку, а на правки и креатив.
-
Обзорщики и авторы туториалов с голосом
- В unboxing‑режиме конвейер ищет куски, где вы молчите и камера почти не двигается, и режет их.
- При этом голос, интонация и объяснения остаются в реальном времени, без "чипмунк‑эффекта".
- Хороший вариант, если вы не хотите отдавать монтаж на аутсорс, но устали от рутины.
-
Те, кто ведёт несколько платформ сразу
- Основной горизонтальный ролик рендерится в 4K и уходит в YouTube.
- Параллельно формируются вертикальные клипы для Shorts, Instagram Reels и Facebook.
- Публикация идёт через один скрипт
run_pipeline.pyс флагом--yesбез ручного подтверждения.
-
Авторы с бэклогом сырых видео
- Конвейер можно запустить на ночь и прогнать десяток роликов подряд.
- По заявлению авторов пайплайна, 10 видео обрабатываются так же легко, как одно — всё упирается в мощность GPU и диск.
Где инструмент не подойдёт
- Если ваш контент — сложно построенный сторителлинг, кино или клипы, где важен кадр‑в‑кадр контроль, Doza Assist пригодится только как черновой черновик.
- Если вы вообще не знакомы с Python и терминалом и не готовы разбираться, установка может показаться сложной: придётся ставить FFmpeg, Python‑зависимости, настраивать токены API.
- Если у вас нет NVIDIA‑видеокарты с NVENC, конвейер всё равно запустится, но рендер и анализ будут заметно дольше.
Ограничения по доступности
- Пайплайн живёт на GitHub и работает локально — это не облачный сервис.
- Для загрузки на YouTube, Instagram и Facebook нужны рабочие ключи YouTube Data API и Meta Graph API. В России доступ к этим сервисам может требовать VPN и обход ограничений.
- Никаких встроенных обходов блокировок в проекте нет — всё на стороне пользователя.
Практический совет: если вы монтируете 1–2 коротких видео в месяц и любите делать всё вручную, выгода будет минимальной. Если у вас канал с регулярным контентом (еженедельно и чаще) или архив необработанных съёмок, экономия времени станет заметной уже на первом месяце.
Место на рынке
Doza Assist — это не SaaS‑редактор, а "скриптовый монтажёр" для тех, кто уже живёт в экосистеме DaVinci Resolve и не боится терминала.
По сути, он конкурирует не с CapCut или мобильными приложениями, а с:
- встроенной системой автонарезки в монтажных программах;
- ручным монтажом фрилансером или самим автором;
- самодельными Python‑скриптами для FFmpeg.
Конкретные отличия:
-
Глубина анализа
- Вместо простого поиска по уровню звука или резким изменениям кадра здесь связка Qwen2.5‑VL‑7B + CLIP + ResNet‑50.
- Это позволяет оценивать "интересность" сцен по содержанию: крупные планы, демонстрация результата, динамика.
-
Интеграция с DaVinci Resolve
- Мало кто из публичных инструментов отдаёт результат сразу в FCPXML под Resolve с учётом LUT, музыки, переходов и водяных знаков.
- Здесь монтажёр получает не просто набор клипов, а почти готовый проект.
-
Полный цикл до публикации
- Большинство решений останавливаются на рендере.
- В Doza Assist есть автоматическая загрузка в YouTube (включая Shorts), Instagram и Facebook с учётом разных кодеков и форматов.
Сравнить по скорости с GPT‑4o, Claude 3 Opus и другими LLM‑сервисами нельзя: здесь нет облачного API, всё крутится локально на вашей машине. Время обработки упирается в мощность GPU, диска и длину ролика.
Если вы уже пользуетесь облачными сервисами автонарезки, Doza Assist может быть интересен как более контролируемый и расширяемый вариант: код открыт, можно менять промпты, модели и логику нарезки.
Установка
Требования
- Python: 3.9+
- GPU: NVIDIA с поддержкой NVENC (рекомендовано для анализа и кодирования).
- RAM: 32 ГБ+ рекомендуется, минимум 16 ГБ.
- Хранение: SSD с минимум 20 ГБ свободного места под кэш и выходные файлы.
- Монтажка: DaVinci Resolve 20.x (автоматизация проверена на 20.0.1).
- FFmpeg с поддержкой NVENC.
- ОС, на которой тестировали авторы: Fedora 43 Workstation.
Дополнительные загрузки:
- DaVinci Resolve: https://www.blackmagicdesign.com/support/family/davinci-resolve-and-fusion
- Filmic LUT Pack (iPhone): https://www.filmicpro.com/products/luts/
- Прямой загрузчик LUT: https://www.filmicpro.com/downloads/Filmic_Pro_deLOG_LUT_Pack_May_2022.zip
Базовая установка
# Клонируем репозиторий и переходим в каталог проекта
cd ~ /video
# Создаём виртуальное окружение
python3 -m venv .venv
source .venv/bin/activate
# Ставим зависимости
pip install -r requirements.txt
# AI‑модели скачаются автоматически при первом запуске
# Кэш моделей: ~/.cache/huggingface/ и ~/.cache/clip/
Все Python‑зависимости зафиксированы в requirements.txt.
Структура проекта
~/video/
├── run_pipeline.py # Главный оркестратор (все стадии)
├── analyze_advanced5.py # Stage 1: AI-анализ видео
├── extract_scenes.py # Stage 2: извлечение сцен
├── export_resolve.py # Stage 3: экспорт таймлайна (16:9)
├── export_reels.py # Экспорт таймлайна Reels (9:16)
├── apply_lut_resolve.py # Применение LUT через Resolve API
├── render_youtube.py # Рендер 4K MP4 через Resolve API
├── render_reels.py # Рендер 1080x1920 Shorts MP4 через Resolve
├── upload_youtube.py # Загрузка в YouTube (основное + shorts)
├── upload_instagram.py # Загрузка фото/реилов в Instagram
├── upload_facebook.py # Загрузка фото/реилов в Facebook Page
├── instagram_credentials.json # Креды Meta API (не в git)
├── project_config.json # Конфигурация проекта
├── assets/
│ ├── Start-Intro-V3.mov # Интро (10-bit)
│ ├── Finish-Intro-V3.mov # Аутро (10-bit)
│ ├── qr-code.jpg # Водяной знак
│ ├── music-background/ # Фоновая музыка (WAV)
│ ├── music-teaser/ # Музыка для тизеров/реилов (WAV)
│ ├── photos/ # Фото проекта
│ ├── photo-index/ # Фото для обложек
│ ├── videos-reels/ # Локальные исходники для реилов
│ ├── teaser-videos/ # Исходники для тизеров
│ └── watermark/ # Ассеты водяного знака
├── ai_clips/ # Вырезанные сцены
│ └── {video_stem}/
│ ├── *_scene_*.mov
│ └── *_showcase_*.mov
├── tools/
│ ├── install_gcc12.sh # Сборка GCC 12 для CUDA
│ ├── build_llama_cpp_with_gcc12.sh # Сборка llama-cpp-python с CUDA
│ ├── patch_cuda_math.sh # Патч заголовков CUDA math
│ └── test_video_gpu.py # Тест GPU-видеопроцессинга
├── timeline_davinci_resolve.fcpxml # Основной таймлайн (16:9)
└── timeline_reels.fcpxml # Таймлайн Reels (9:16)
Как запустить
Полный автоматический конвейер
# Полный цикл: анализ → нарезка → таймлайн → рендер → YouTube
python run_pipeline.py
# Без интерактивных вопросов (подтверждает всё автоматически)
python run_pipeline.py --yes
# Unboxing-режим + генерация reels, полностью автоматом
python run_pipeline.py --mode unboxing --reels-only --yes
# Результат: timeline_davinci_resolve.fcpxml + папка ai_clips/
Этот скрипт запускает все стадии подряд:
- AI‑анализ всех видео в входной директории.
- Извлечение сцен с учётом скоростей.
- Генерация таймлайна с музыкой, переходами и эффектами.
- Импорт в DaVinci Resolve + применение LUT через API.
- Рендер 4K MP4 через Resolve.
- Загрузка основного видео на YouTube (OAuth 2.0).
- При включённом reels‑режиме — рендер и загрузка вертикальных клипов и фотоконтента.
Управление режимами из CLI
# Build (по умолчанию)
python run_pipeline.py
# Unboxing — сохранить озвучку, без ускорения
python run_pipeline.py --mode unboxing
# Только reels (без повторного анализа)
python run_pipeline.py --mode reels
# или
python run_pipeline.py --reels-only
# Не задавать вопросов в процессе
python run_pipeline.py --mode unboxing --yes
# Unboxing + reels, без вопросов
python run_pipeline.py --mode unboxing --reels-only --yes
Публикационный конвейер
После рендера run_pipeline.py распределяет контент по платформам.
Стадии публикации:
[7/7] upload_youtube.py— YouTube, основное 4K‑видео, YouTube Data API v3 (OAuth 2.0).[R4/8] upload_youtube.py --shorts— YouTube Shorts, вертикальный ролик.[R5/8] upload_instagram.py --video— Instagram Reel, Meta Graph API (Resumable Upload).[R6/8] upload_facebook.py --video— Facebook Reel, Meta Graph API/ {page_id} /videos.[R7/8] upload_facebook.py --all— Facebook фотопост, Multi‑Photo.[R8/8] upload_instagram.py --photo— Instagram‑карусель, Meta Graph API (CDN Relay).
Для всех загрузок нужны валидные JSON‑файлы с ключами и токенами. Флаг --yes отключает все подтверждения и превращает процесс в полностью автоматический.
Итог
Doza Assist — это про скорость и масштаб: один Python‑конвейер берёт на себя черновой просмотр, нарезку и базовый монтаж длинных видео, а заодно готовит вертикальные клипы и постит всё в соцсети. Если вы живёте в DaVinci Resolve, снимаете регулярно и устали от однотипной ручной работы, этот проект стоит попробовать хотя бы как стартовый слой для ваших монтажей.