ГлавнаяБлогСоздание ReelCraft: как я использовал Gemini 3.7 Flash для видеомонтажа
AI / Нейросети

Создание ReelCraft: как я использовал Gemini 3.7 Flash для видеомонтажа

Узнайте, как использовать Gemini 3.7 Flash для анализа видео и автоматического монтажа. Практический пример с Python CLI и ffmpeg. Начните прямо сейчас!

Al
Редакция Algolitalgolit.ru
10 мин чтения15 августа 2026 г.

Как я создал ReelCraft: автоматический видеомонтаж с Gemini 3.7 Flash

Все началось с недопонимания. Я увидел в документации Gemini API новую модель Omni Flash, которая обещала обрабатывать видео, и подумал: а что если скормить ей кучу видео и фото, а она сама смонтирует из них ролик? Оказалось, что это не так, но после обхода ограничений получился рабочий инструмент. В этой статье я расскажу, как использовать Gemini для анализа видео и автоматического монтажа, и какие грабли ждут на этом пути.

Что такое Gemini Omni Flash на самом деле

Gemini Omni Flash — это модель для генерации и редактирования одного видео с помощью естественного языка. Она не умеет анализировать несколько видео сразу. В документации прямо сказано: «Ссылки или рассуждения о нескольких видео не поддерживаются». Также видео длиннее 3 секунд обрабатываются некорректно. Поэтому путь «закинуть все и получить монтаж» был закрыт. Для анализа нескольких видео нужно использовать стандартные модели Gemini, например, 2.5 или 3.7 Flash, которые поддерживают до 10 видео в одном запросе и имеют контекст в 1M токенов.

Обход ограничений: анализ каждого файла отдельно

Мой конвейер состоит из пяти этапов: сканирование файлов, анализ каждого файла, составление плана, ручная проверка и рендер. Ключевое решение — на этапе анализа вызывать Gemini для каждого видео отдельно, получая таймкоды и описания, а затем передавать эти текстовые результаты (не сами видео) в модель для агрегации. Так мы избегаем проблемы «много видео» и не упираемся в лимит 10 видео. К тому же, таймкоды при отдельной обработке получаются точнее.

Пример кода: анализ файла

def analyze_file(file_path: str) -> dict:
    """Анализирует видео или фото и возвращает JSON с описанием"""
    # Загружаем файл и отправляем в Gemini
    media = upload_file(file_path)
    prompt = """Опиши содержимое этого видео. Укажи ключевые моменты с таймкодами в формате JSON:
    {"description": "...", "highlights": [{"timestamp": "00:01.500", "event": "..."}]}"""
    response = model.generate_content([media, prompt])
    return json.loads(response.text)

Промежуточный файл edl.yaml для ручной правки

Я решил не делать полную автоматизацию. Между входными файлами и финальным роликом есть этап, где я могу вмешаться вручную. Для этого используется YAML-файл, в котором указаны клипы, их порядок, таймкоды и переходы. Меняя числа в этом файле, можно корректировать монтаж без перезапуска всего конвейера.

Пример edl.yaml

target_duration_sec: 23
a spect_ratio: '9:16'
clips:
  - source: /path/to/video1.mp4
    note: Открывающий кадр
    in: '00:00.000'
    out: '00:02.500'
  - source: /path/to/photo.jpg
    note: Забавный момент
    duration_sec: 4.0
transitions: crossfade 0.3s
mood_tags: [Professional, Joyful, Community Cohesion]

Переход на Gemini 3.7 Flash: качество анализа выросло

Изначально я использовал gemini-2.5-flash, но затем перешел на gemini-3.7-flash. Разница в описаниях была заметна: 2.5 описывала слайд как «информация о работе», а 3.7 прочитала текст и назвала должность. В агрегации 3.7 распознала название мероприятия и детали, которых не было в промпте. Это улучшило качество монтажа.

Фоновая музыка: Lyria 3 использует другой API

Для фоновой музыки я использовал Lyria 3. В отличие от обычного generate_content, здесь нужно вызывать client.interactions.create(). У модели нет структурированных параметров — все (длительность, темп, настроение) пишется в промпте. Также музыка не редактируется, а если она короче видео, приходится зацикливать ее с помощью ffmpeg.

ffmpeg молча ломает монтаж

При использовании фильтра xfade для переходов нужно правильно рассчитывать offset. Если ошибиться, ffmpeg может выдать ошибку или просто пропустить кадры, но не сообщит об этом. Поэтому важно проверять результат, проигрывая видео.

Субтитры: две проблемы, которые видны только после прожига

Субтитры генерировались из поля note, но после смены модели формат заметок изменился, и субтитры стали некорректными. Пришлось адаптировать парсер. Также нужно учитывать длину текста и его позицию на экране, иначе субтитры перекрывают важные элементы.

Другие грабли и выводы

Я столкнулся с тем, что при повторном запуске analyze приходится платить за повторный анализ, поэтому я добавил кэширование. Также важно, чтобы вторичные функции (например, генерация музыки) не ломали основной процесс — они должны корректно обрабатывать ошибки.

Практический вывод

Если вы хотите автоматизировать монтаж видео с помощью ИИ, начните с малого: используйте Gemini для анализа отдельных файлов, а затем собирайте ролик через ffmpeg. Не пытайтесь заставить одну модель делать все — разделите задачи. И всегда проверяйте результат визуально, потому что ошибки не всегда очевидны.

#gemini#видеомонтаж#python#ffmpeg#ии
Al
Редакция Algolit

Пишем про алгоритмы, подготовку к собеседованиям и карьеру в IT — так, чтобы было понятно и полезно.

Хочешь закрепить знания на практике?

Решай задачи на Algolit — интерактивная платформа для обучения

Начать бесплатно →