# Исследование API-сервисов: Video Intelligence, STT, TTS & B-Roll **Дата:** 1 апреля 2026 **Консультанты:** ML/AI-инженер, Backend-архитектор, Remotion-инженер, Product Lead, + 4 исследовательских агента **Контекст:** Глубокий анализ API-сервисов для будущих фич — highlight detection, shorts generation, semantic search, B-Roll --- ## Содержание 1. [Executive Summary](#1-executive-summary) 2. [STT — обновлённое сравнение](#2-stt--обновлённое-сравнение) 3. [TTS — обновлённое сравнение](#3-tts--обновлённое-сравнение) 4. [Video Intelligence — полное сравнение](#4-video-intelligence--полное-сравнение) 5. [TwelveLabs — глубокий анализ](#5-twelvelabs--глубокий-анализ) 6. [Gemini 2.5 — ключевой новый игрок](#6-gemini-25--ключевой-новый-игрок) 7. [Clipping-платформы (OpusClip, Reap, Vizard)](#7-clipping-платформы) 8. [B-Roll генерация](#8-b-roll-генерация) 9. [Архитектура интеграции в Coffee Project](#9-архитектура-интеграции-в-coffee-project) 10. [Remotion Pipeline — эволюция](#10-remotion-pipeline--эволюция) 11. [Продуктовая стратегия и монетизация](#11-продуктовая-стратегия-и-монетизация) 12. [Сводная таблица стоимости](#12-сводная-таблица-стоимости) 13. [Рекомендации и дорожная карта](#13-рекомендации-и-дорожная-карта) 14. [Красные флаги в текущем коде](#14-красные-флаги-в-текущем-коде) 15. [Источники](#15-источники) --- ## 1. Executive Summary ### Ключевые находки 1. **Gemini 2.5 Flash — game-changer.** $0.005/мин за видеоанализ (20-60x дешевле TwelveLabs). Достаточно для MVP highlight detection. 2. **TwelveLabs оправдан только для повторных запросов.** Модель «проиндексируй раз — ищи многократно» выгодна при 10+ запросах к одному видео. Для одноразового анализа — Gemini дешевле. 3. **ElevenLabs Scribe v2 — лучший STT для нашего продукта.** WER 2.3%, точные пословные таймстемпы (критично для субтитров), встроенная диаризация. $0.40/час. 4. **B-Roll генерация НЕ готова для продакшна.** Рекомендация: Pexels API (бесплатный) для поиска стокового видео по ключевым словам из транскрипции. 5. **Reap.video — неожиданно сильный конкурент.** API + CLI + MCP за $9.99/мес, 98 языков для субтитров. Дешевле и доступнее OpusClip. 6. **У Coffee Project нулевая инфраструктура монетизации.** Нет планов, тарифов, трекинга использования, биллинга. Это блокер для любых платных фич. 7. **Русский рынок — first-mover advantage.** Нет локальных конкурентов в AI video clipping. Западные инструменты недоступны из-за санкций. ### Рекомендуемый стек (обновлённый) | Задача | Сервис | Цена | Зачем именно этот | |--------|--------|------|-------------------| | STT (продакшн) | ElevenLabs Scribe v2 | $0.40/час | Лучший WER + таймстемпы для субтитров | | STT (черновик/preview) | Whisper v3-turbo (DeepInfra) | $0.06/час | 253x realtime, мгновенный preview | | Highlight detection (MVP) | Gemini 2.5 Flash | $0.005/мин | 20-60x дешевле TwelveLabs | | Highlight detection (premium) | TwelveLabs Pegasus 1.2 | $0.063/мин | Лучшая точность для автоматизации | | Chapters | Gemini 2.5 Flash | $0.005/мин | Достаточно качества, минимальная цена | | Semantic search | TwelveLabs Marengo 3.0 | $4/1000 запросов | Единственный с pre-indexed search | | B-Roll suggestions | Pexels API | Бесплатно | Реальное видео > AI-генерация | | TTS (русский) | SaluteSpeech | $2.1/1M символов | Самый дешёвый для RU | --- ## 2. STT — обновлённое сравнение ### Сравнительная таблица (апрель 2026) | Сервис | WER (EN) | WER (RU, оценка) | $/час | Пословные таймстемпы | Диаризация | Особенности | |--------|----------|-------------------|-------|----------------------|------------|-------------| | **ElevenLabs Scribe v2** | **2.3%** | ~5-7% | $0.40 | Да, точные (для субтитров) | Да (batch) | Audio tagging (смех, музыка), 90+ языков | | **Deepgram Nova-3 Mono** | 5.4% | ~8-12% | $0.46 | Да, улучшены в v3 | Да (+$0.12/час) | Code-switching 10 языков в одном потоке | | **Deepgram Nova-3 Multi** | 5.4% | ~8-12% | $0.55 | Да | Да | Мультиязычная версия | | **Whisper large-v3 (stock)** | 4.2% | 9.0% | $0.06 (DeepInfra) | Да, ±500ms нативно | Нет | Open-source, pay-as-you-go | | **Whisper large-v3 (fine-tuned RU)** | — | **6.4%** | Self-hosted | Да, ±500ms | Нет | Требует GPU, инфраструктура | | **Whisper v3-turbo** | 4.8% | 10.2% | $0.06 (DeepInfra) | Да, менее точные | Нет | 253x realtime, 6x быстрее large | | **Google Speech V1** (текущий) | ~6-8% | ~8-12% | ~$0.06/15сек | Да | Да | Уже интегрирован | ### Критический вывод: точность таймстемпов Для Coffee Project **точность пословных таймстемпов — главная метрика**, потому что субтитры синхронизируются покадрово в Remotion через `WordNode.time.start/end`. - **ElevenLabs Scribe v2**: создан для субтитрирования. Точность таймстемпов достаточна без постобработки. - **Whisper нативный**: ±500ms на уровне сегментов. Пословные таймстемпы из cross-attention весов — заметно неточные. Это проблема, которая уже есть в проекте. - **Whisper + WhisperX**: значительно лучше через wav2vec2 forced alignment, но добавляет вторую модель и сложность. ### Рекомендация ML/AI-инженера **Двухуровневая архитектура STT:** | Уровень | Движок | Задержка | $/час | Когда | |---------|--------|----------|-------|-------| | Черновик (мгновенный) | Whisper v3-turbo (DeepInfra) | ~2-3 сек на 5 мин | $0.06 | Preview сразу после загрузки | | Продакшн (точный) | ElevenLabs Scribe v2 | ~15-30 сек на 5 мин | $0.40 | Заменяет черновик, используется для рендера | Экономия: 85% на большинстве взаимодействий (просмотр, предпросмотр), где достаточно черновика. ### Новое в ElevenLabs Scribe v2 - **Audio tagging** (январь 2026): детектирует смех, аплодисменты, музыку, шаги, фоновый шум. Теги появляются inline в транскрипте с таймстемпами: `(laughter)`, `(music)`. - **Scribe v2 Realtime**: 30-80ms задержка, 93.5% точность на 30 языках. - **Voice Isolator**: нейронное разделение речи — полезно для предобработки шумного видео. ### Новое в Deepgram Nova-3 - **54.2% снижение WER** для стриминга vs конкурентов. - **Live code-switching**: 10 языков (включая русский) в одном потоке. - **Keyterm prompting**: мультиязычный, улучшает точность для специфических терминов. - **Audio Intelligence — по-прежнему только EN.** Sentiment, topics, intent — только английский. Это критическое ограничение для нашего продукта. --- ## 3. TTS — обновлённое сравнение Без изменений vs первоначальное исследование. Обновлённые цены Deepgram: | Сервис | $/1K символов | $/1M символов | Особенности | |--------|---------------|---------------|-------------| | **SaluteSpeech** (Сбер) | ~$0.0021 | ~$2.1 | Самый дешёвый. RU/EN/KZ | | **Deepgram Aura-1** | $0.015 | $15 | Предыдущее поколение | | **Deepgram Aura-2** | $0.030 | $30 | Новейшая модель | | **ElevenLabs Flash/Turbo** | $0.06 | $60 | Business tier, ~75ms, 32 языка | | **ElevenLabs Multilingual v2/v3** | $0.12 | $120 | Премиум качество, voice cloning | --- ## 4. Video Intelligence — полное сравнение ### Сравнительная матрица | Параметр | TwelveLabs | Gemini 2.5 Pro | Gemini 2.5 Flash | GPT-4o/4.1 | Google Video Intelligence | Azure Video Indexer | |----------|-----------|----------------|------------------|------------|--------------------------|---------------------| | **Тип** | Video-native foundation models | General VLM с видеовходом | General VLM (лёгкий) | Image-only (кадры) | Structured annotation | ML pipeline orchestrator | | **Архитектура** | Marengo (embeddings) + Pegasus (генерация) | Мультимодальный LLM | Мультимодальный LLM | Мультимодальный LLM (без видео) | Отдельные ML-модели | Набор Azure AI сервисов | | **Highlight detection** | Нативный API, таймкоды | Через промпт, секундные таймкоды | Через промпт | Нет | Нет | Нет | | **Semantic search** | Pre-indexed (Marengo) | Промпт-based | Промпт-based | Нет | Нет | Нет | | **Chapters** | Нативный API | Через промпт | Через промпт | Через промпт | Нет | Нет | | **Object tracking** | Сильный, cross-frame | Ограниченный | Ограниченный | Нет (между кадрами) | Отдельная фича ($0.15/мин) | Да | | **Макс. длительность** | 4 часа (Marengo), 1 час (Pegasus) | ~6 часов (2M контекст) | ~6 часов | Ограничен кадрами | Без лимита | 12 часов (free tier) | | **Русская речь** | Да (36+ языков) | Да (сильный) | Да | Нет нативного аудио | 50+ языков | 50+ языков | | **Цена за 1 мин** | $0.063 (index+analyze) | $0.021 (≤200k) | **$0.005** | $0.026-0.23 | $0.025-0.15 (per feature) | Custom | | **Цена за 1 час** | $3.78 | $1.26 | **$0.36** | $1.56-13.80 | $1.50-9.00 | Custom | | **Повторные запросы** | $4/1000 (дёшево) | Пересчитываются (дорого) | Пересчитываются | Пересчитываются | — | — | | **Бенчмарки** | SOTA VideoMME-Long (30+ мин) | 85.2% VideoMME | Ниже Pro | 72% VideoMME | — | — | ### Ключевой инсайт: «проиндексируй раз — ищи многократно» TwelveLabs заявляет ~36,000x дешевле Gemini для повторных запросов к тому же видео ($0.09/видео-час/месяц vs $4.50/1M токенов за запрос). Но для **одноразового анализа** (highlight detection для одного видео) — Gemini 2.5 Flash в 12x дешевле. --- ## 5. TwelveLabs — глубокий анализ ### Актуальные модели (апрель 2026) | Модель | Статус | Назначение | Ключевые улучшения | |--------|--------|-----------|-------------------| | **Marengo 3.0** | GA (текущая) | Embeddings, Search | 512-dim (было 1024), composed text+image search, спорт, 36 языков, 4 часа видео, 2x быстрее | | **Pegasus 1.2** | GA (текущая) | Analyze, генерация | 1 час видео, меньше галлюцинаций, SOTA на VideoMME-Long | | Marengo 2.7 | **Sunset 30 марта 2026** | — | Устарела | | Pegasus 1.1 | **Discontinued** | — | Автообновлена до 1.2 | ### Подтверждённые цены (Developer plan) | Компонент | Цена | Подтверждено | |-----------|------|-------------| | Video indexing (Marengo/Pegasus) | $0.042/мин ($2.52/час) | ✅ | | Infrastructure (хранение индексов) | $0.0015/мин ($0.09/час/мес) | ✅ | | Analyze API input (Pegasus) | $0.021/мин | ✅ | | Analyze API output | $7.50/1M токенов | ✅ | | Search API | $4/1000 запросов | ✅ | | Embed API (video) | $0.042/мин | ✅ | | **Embed API (audio only)** | **$0.0083/мин** | 🆕 | | **Embed API (image)** | **$0.10/1000 запросов** | 🆕 | | **Embed API (text)** | **$0.07/1000 запросов** | 🆕 | Free tier: 600 минут, 100 видео, 90 дней хранения. ### SDK и интеграция **Python SDK** (`pip install twelvelabs`, v1.2.1): ```python from twelvelabs import TwelveLabs client = TwelveLabs(api_key=API_KEY) # Highlight detection res = client.generate.summarize(video_id="...", type="highlight") for hl in res.highlights: print(f"{hl.start}s-{hl.end}s: {hl.highlight}") # Chapter generation res = client.generate.summarize(video_id="...", type="chapter") for ch in res.chapters: print(f"{ch.start}s-{ch.end}s: {ch.chapter_title}") # Structured JSON output (новое) result = client.analyze( video_id="...", prompt="Extract key moments", response_format=ResponseFormat(type="json_schema", json_schema={...}) ) ``` **Node.js SDK**: `npm install twelvelabs-js` (production-ready). **OpenAPI spec**: 8,400 строк, доступен в [repo](https://github.com/twelvelabs-io/twelvelabs-developer-experience). ### Ограничения и gotchas - Текстовый запрос: макс **77 токенов** (Marengo), **500 токенов** (Marengo 3.0) - Промпт Pegasus: макс **375 токенов** - Видео: 360x360 — 5184x2160, aspect ratio 1:1 — 2.4:1, мин 4 сек - Размер файла: макс 200 МБ (прямая загрузка), 4 ГБ (multipart/URL) - Индексация: только async, нужно poll status или webhook - **Webhooks только для индексации** — нет для analyze/search/embed - Rate limits: Free 8 RPM, Dev Tier 1 = 600 RPM (search), автоапгрейд при $200+/мес ### Интеграции из repo - **Vector Store RAG**: ChromaDB, Weaviate, LanceDB, Oracle - **Real-time мониторинг**: VideoDB (RTSP feeds) - **Visual pipelines**: Langflow - **Chatbot**: Poe --- ## 6. Gemini 2.5 — ключевой новый игрок ### Почему это важно Gemini 2.5 Flash при $0.005/мин — это **20-60x дешевле TwelveLabs** для одноразового видеоанализа. С 2M-токенным контекстом может обработать ~6 часов видео за один вызов. Это делает highlight detection доступным даже на free tier нашего продукта. ### Pricing per minute video Видео потребляет **258 токенов/сек** (1 fps). Аудио добавляет **25 токенов/сек**. | Модель | $/мин (видео) | $/мин (видео+аудио) | $/час | Batch (50% скидка) | |--------|---------------|---------------------|-------|-------------------| | **Gemini 2.5 Flash** | **$0.005** | $0.006 | $0.36 | $0.18/час | | Gemini 2.5 Pro (≤200k) | $0.019 | $0.021 | $1.26 | $0.63/час | | Gemini 2.5 Pro (>200k) | $0.039 | $0.041 | $2.46 | $1.23/час | ### Gemini vs TwelveLabs: когда что | Сценарий | Победитель | Почему | |----------|-----------|-------| | Одноразовый highlight detection | **Gemini Flash** | 12x дешевле ($0.005 vs $0.063/мин) | | Точные таймкоды для автоматической нарезки | **TwelveLabs** | Video-native модель, лучше temporal grounding | | Повторные запросы к библиотеке видео | **TwelveLabs** | Index once, query many ($4/1000 запросов) | | Object tracking cross-frame | **TwelveLabs** | Архитектурное преимущество | | Chapter generation | **Gemini Flash** | Достаточно качества, 12x дешевле | | Semantic search | **TwelveLabs** | Единственный с pre-indexed vector search | | Budget MVP | **Gemini Flash** | Минимальная стоимость входа | ### GPT-4o/4.1 — не рекомендуется для видео - **Нет нативного видеовхода** — нужно извлекать кадры (OpenCV/ffmpeg) - 85 токенов/кадр (low detail), 765 токенов/кадр (high detail) - $0.026-0.23/мин — **дороже Gemini при худшем качестве** - Нет аудио из видео (отдельный Whisper) - Нет встроенных таймкодов - GPT-4.1: улучшен до 72% VideoMME, но фундаментальное ограничение (кадры) остаётся --- ## 7. Clipping-платформы ### Сравнение API-доступности | Платформа | API | Цена API | Highlights | Captions | Reframe | Batch | RU | |-----------|-----|----------|-----------|----------|---------|-------|-----| | **OpusClip** | Enterprise only | Custom | ✅ 95%+ mAP | ✅ | ✅ | 50 concurrent | Нет | | **Reap.video** | Все планы ($9.99+) | Включена | ✅ Multi-signal | ✅ 98 языков | ✅ | 5-15 concurrent | ✅ | | **Vizard** | Paid планы ($20+) | Включена | ✅ | ✅ 100+ языков | ✅ | Minimal API | Неизвестно | | **Descript** | Нет public API | — | ✅ "Find Good Clips" | ✅ | ✅ | — | Нет | | **CapCut** | Нет public API | — | ✅ Smart Highlights | ✅ | ✅ | — | Частично | ### OpusClip — подробнее - **ClipAnything**: мультисигнальный AI (визуал + аудио + сентимент), mAP 0.93 - **Virality Score**: 0-100 эвристика, спорная точность (клипы с низким скором часто работают лучше) - **API**: Enterprise-only, 30 req/мин, макс 10 часов видео - **Цены SaaS**: Free 60 мин/мес → Starter $15 (150 мин) → Pro $14.50/мес (annual, 3600/год) - **Барьер**: API недоступен на обычных планах ### Reap.video — неожиданно сильный - **API + CLI + MCP** за $9.99/мес — значительно доступнее OpusClip - **MCP Server** — прямая интеграция с Claude Code и другими AI-агентами - **Prompt-first clipping**: опиши какие клипы хочешь — AI найдёт - **98 языков** включая русский для субтитров - **80 языков** для дубляжа (русский включён) - **Romanized scripts** (Hinglish, Arabizi) — уникальная фича ### Конкурентная карта (Product Lead) ``` ВЫСОКАЯ ЦЕНА | Descript | (Enterprise) $24-35/мес | | OpusClip $29 | | Vizard $20-30---+--- ☕ Coffee Project TARGET: $15-29/мес | Субтитры + Клипы в одном | Reap $9.99 | | CapCut | $8-20 | | НИЗКАЯ ЦЕНА | ТОЛЬКО СУБТИТРЫ -------------- ПОЛНЫЙ REPURPOSING ``` **Позиционирование Coffee Project**: «Единственный инструмент, где субтитры И клипы — first-class citizens в одном workflow, по цене ниже full-editor tax.» --- ## 8. B-Roll генерация ### Text-to-Video модели: текущее состояние | Модель | Качество | Длительность | $/5-сек клип | Готово для B-Roll? | |--------|----------|-------------|-------------|-------------------| | **Runway Gen-4 Turbo** | Хорошее, быстрое | 5-10 сек | $0.25 | Почти, но артефакты | | **Runway Gen-4.5** | Выше | 5-10 сек | $0.60 | Ближе | | **Runway Gen-4 Aleph** | Наивысшее (Runway) | 5-10 сек | $0.75 | Ближе | | **Pika 2.2** (via fal.ai) | Хорошее для соцсетей | 5 сек | **$0.20** | Для некритичного контента | | **Kling 2.6** | Отличное для природы | 5-10 сек | $0.45-0.50 | Для ландшафтов да | | **Veo 3.1** (Runway API) | Сильное | 5-10 сек | $1.00 | Дорого | ### Честная оценка ML/AI-инженера: генерация НЕ готова **Нет, ещё не для профессионального использования.** Причины: 1. **Консистентность**: каждая генерация независима. Нельзя получить два клипа с одинаковым освещением, локацией, камерой. 2. **Длительность**: 5-10 секунд. Реальный B-Roll — 15-60 секунд. Нужно цепочку генераций, что усиливает проблему консистентности. 3. **Артефакты**: даже Runway Gen-4 даёт нарушения физики, несоответствие освещения, «AI-маркеры». 4. **Стоимость**: 5-10 B-Roll клипов × $0.50 (+ 2-3 перегенерации) = $7.50-15 за видео. Стоковое видео дешевле. ### Рекомендация: AI-powered поиск стокового видео | Сервис | Цена | Библиотека | API | Semantic Search | |--------|------|-----------|-----|-----------------| | **Pexels API** | **Бесплатно** | ~150K видео | Да, хорошая документация | Базовый keyword | | **Storyblocks API** | Подписка | 1M+ видео | Да | Лучшая категоризация | | **Shutterstock API** | Per-download / подписка | Крупнейшая | Да | AI-powered search | **Phase 1 (запустить сейчас): Pexels API.** Pipeline: 1. Транскрипция даёт текстовые сегменты с таймкодами 2. Gemini Flash анализирует сегменты → предлагает ключевые слова для B-Roll 3. Pexels API ищет подходящее стоковое видео 4. Пользователь выбирает из предложений Бесплатно, реальное видео выглядит профессионально, можно запустить за недели. **Phase 2 (когда модели созреют): AI-generated B-Roll как premium-опция.** Revisit в Q3 2026 с Runway Gen-5 / Veo 4. --- ## 9. Архитектура интеграции в Coffee Project ### Текущий pipeline (recap) ``` Upload → S3 → Media Probe (ffprobe) → Transcription (Whisper/Google) → Captions (Remotion) → S3 ↕ Silence Detection (pydub) ``` **Что есть:** - 2 STT-движка: LOCAL_WHISPER (default `tiny` — плохое качество), GOOGLE_SPEECH_CLOUD - Dramatiq actors для всех фоновых задач с webhooks + WebSocket notifications - Пустое поле `semantic_tags` в `WordNode` — готово для ML-аннотаций - Silence detection (pydub + librosa) **Чего нет:** - Highlight/chapter detection - Semantic search - Video intelligence интеграция - Монетизация (планы, квоты, биллинг) ### Новый модуль: `video_intelligence` Backend-архитектор рекомендует **один новый модуль** со стандартной 6-файловой структурой: ``` cpv3/modules/video_intelligence/ __init__.py models.py # VideoIndex model schemas.py # Index, Highlight, Chapter, Search schemas repository.py # VideoIndexRepository service.py # Provider calls, business logic router.py # API endpoints ``` ### Модель данных ```python class VideoIndex(Base, BaseModelMixin): user_id: UUID # FK users project_id: UUID | None # FK projects source_file_id: UUID # FK files provider: str # "TWELVE_LABS" | "GEMINI" provider_index_id: str # Provider-specific ID provider_video_id: str # Provider video ref highlights_json: dict | None # Cached highlights (JSONB) chapters_json: dict | None # Cached chapters (JSONB) index_status: str # PENDING | INDEXING | READY | FAILED video_duration_seconds: float indexing_cost_cents: int | None # Cost tracking ``` Highlights и chapters — JSONB-колонки (не отдельные таблицы), по аналогии с `Transcription.document`. ### Расширенный pipeline ``` Upload → S3 → Media Probe | +-----------+-----------+ | | Transcription Video Index (user-triggered) (Whisper/Scribe) (TwelveLabs/Gemini) | | | +--------+--------+ | | | | | Highlights Chapters Search | (Dramatiq) (Dramatiq) (sync endpoint) | | | +------+-------+--------+ | Shorts/Clips Rendering (Remotion) ``` ### Режимы операций | Операция | Режим | Почему | |----------|-------|-------| | Video indexing | **Dramatiq (async)** | Минуты обработки | | Highlight detection | **Dramatiq (async)** | 30-60 сек | | Chapter generation | **Dramatiq (async)** | 30-60 сек | | Semantic search | **Sync endpoint** | 1-3 сек ответ | | B-Roll suggestions | **Sync endpoint** | Быстрый поиск | ### Новые endpoints **Task endpoints** (async, в `tasks/router.py`): ``` POST /api/tasks/video-index/ → 202 Accepted POST /api/tasks/highlights-detect/ → 202 Accepted POST /api/tasks/chapters-generate/ → 202 Accepted ``` **Sync endpoints** (в `video_intelligence/router.py`): ``` GET /api/video-intelligence/{id}/ → VideoIndexRead GET /api/video-intelligence/{id}/highlights/ → HighlightsResult GET /api/video-intelligence/{id}/chapters/ → ChaptersResult POST /api/video-intelligence/search/ → VideoSearchResponse POST /api/video-intelligence/broll-suggestions/ → BRollSuggestionResponse ``` ### Квоты и контроль расходов Redis-based per-user quotas: ```python # Проверка ПЕРЕД созданием Dramatiq task QUOTA_FREE_INDEX_MINUTES = 60 key = f"vi_quota:{user_id}:indexed_minutes" # Кэш поисковых запросов (5 мин TTL) key = f"vi_search_cache:{video_index_id}:{sha256(query)[:16]}" ``` ### Ключевые архитектурные решения 1. **НЕТ автоматической цепочки задач.** Frontend контролирует workflow — каждая задача запускается явно. 2. **НЕТ абстрактного провайдер-паттерна** (YAGNI). Простой string selector как в transcription engine. 3. **Retry с backoff для внешних API** (`max_retries=3, min_backoff=15000`) — в отличие от текущих actors с `max_retries=0`. 4. **Highlights/chapters кэшируются в БД** (JSONB). Search кэшируется в Redis (5 мин TTL). --- ## 10. Remotion Pipeline — эволюция ### Shorts/Clips рендеринг **Гибридный подход FFmpeg + Remotion (2-3x быстрее чистого Remotion):** | Шаг | Инструмент | Время | Зачем | |-----|-----------|-------|-------| | 1. Вырезать клип | FFmpeg `-c copy` | ~1 сек | Stream copy, без перекодирования | | 2. Рендер с субтитрами | Remotion `ShortVideo` | 10-30 сек на клип | Каппинг + reframe + стили | | 3. Upload | S3 multipart | ~5 сек | В папку `shorts/` | **Сравнение для 10-мин видео → 5 Shorts по 1 мин:** | Подход | Общее время | Ресурсы | |--------|------------|---------| | Чистый Remotion (5 рендеров от полного видео) | 5-10 мин | Высокие: 5 Chromium процессов, каждый ищет в 10-мин видео | | **Гибрид** (FFmpeg нарезка + 5 лёгких рендеров) | **2-5 мин** | Средние: FFmpeg ~5 сек + 5 лёгких Remotion | | Чистый FFmpeg (без субтитров) | ~10 сек | Минимальные | ### Новая композиция: `ShortVideo` ```typescript type ShortCompositionProps = { videoSrc: string; transcription: Transcription; fps: number; styleConfig?: CaptionStyleConfig; clipStart: number; // Начало в секундах clipEnd: number; // Конец в секундах cropConfig?: { focusX: number; // 0-1, центр кропа focusY: number; autoReframe: boolean; }; }; ``` **Адаптация субтитров для вертикального формата:** - Шрифт: 60-70px (вместо 40) - Строки на экране: 1, макс 3-4 слова - Позиция: bottom с отступом 80-100px (UI YouTube Shorts/TikTok/Reels перекрывает низ) - Max width: 95% от 1080px - Фон: более непрозрачный **Auto-reframe:** - Phase 1: Center crop (простейший, 607x1080 из 1920x1080) - Phase 2: Speaker-position crop (per-segment `focusX` из ML) - Phase 3: Per-frame face tracking (future) ### Chapter markers Простой overlay — НЕ реструктуризация видео: - `ChapterOverlay` компонент: fade-in заголовок, hold 2 сек, fade-out - `interpolate()` для анимации (не CSS transitions) - YouTube chapters metadata — ответственность backend, не Remotion ### B-Roll в Remotion Самая сложная фича — мультиисточниковый таймлайн: ```typescript type BRollSegment = { src: string; // S3 presigned URL startTime: number; // Когда показать endTime: number; mode: "cutaway" | "pip"; // Полная замена или overlay transitionIn?: "fade" | "slide" | "cut"; audio: "mute" | "duck" | "replace"; }; ``` - Использовать `` (не `