Реализация AI-генерации коротких клипов в мобильном приложении
Короткие клипы — формат TikTok/Reels — отличаются от обычной видеогенерации требованиями к соотношению сторон (9:16), длительности (5–15 секунд) и скорости. Пользователи ожидают получить результат быстро и сразу подходящий для публикации, без ручного кропа.
Разбиваем задачу на компоненты
Генерация короткого клипа по тексту или фото — это не одна операция, а пайплайн:
- Text/Image → Video — сама генерация (Kling, Hailuo, Runway в режиме 9:16)
- Добавление музыки — AI-подбор или генерация трека (Suno API, ElevenLabs Sound Effects)
- Субтитры/текст — оверлей с кастомным шрифтом
- Финальная компрессия — H.264/H.265 для оптимального размера
Каждый шаг можно делать на backend или на клиенте. Видеогенерация — всегда сервер. Монтаж — можно на клиенте через FFmpeg.
Видеогенерация в 9:16
Большинство API поддерживают выбор аспект-ратио:
// Kling API: создание задачи
{
"prompt": "A cinematic shot of...",
"aspect_ratio": "9:16",
"duration": "5",
"mode": "std"
}
Hailuo (MiniMax) и Luma Dream Machine аналогично. Runway Gen-3 поддерживает 768:1280 — это 9:16. Для Image-to-Video: исходное фото кропаем до 9:16 на клиенте перед отправкой.
FFmpeg на мобиле: монтаж без сервера
После получения сгенерированного клипа добавить музыку, субтитры и переходы можно прямо на устройстве. ffmpeg-kit-react-native или нативный ffmpeg-kit для iOS/Android — статически слинкованный FFmpeg без GPL-зависимостей (LGPTv3 сборка).
// Android: наложение аудио на видео через FFmpegKit
FFmpegKit.executeAsync(
"-i ${videoPath} -i ${audioPath} " +
"-filter_complex \"[1:a]afade=t=out:st=4:d=1[a]\" " +
"-map 0:v -map \"[a]\" " +
"-c:v copy -c:a aac -shortest " +
outputPath
) { session ->
if (ReturnCode.isSuccess(session.returnCode)) {
// Готово
}
}
Компрессия для Stories/Reels: -c:v libx264 -crf 23 -preset fast -vf scale=1080:1920. Размер типичного 10-секундного клипа — 5–8 MB в H.264 при 1080p.
Шаблоны клипов
Реальные приложения (CapCut-like) работают по шаблонам: фиксированная структура — заставка 1 сек, основной контент 8 сек, outro 1 сек. Пользователь задаёт только текст/фото, шаблон диктует тайминги и переходы.
Шаблон хранится как JSON:
{
"duration": 10,
"segments": [
{"type": "title_card", "duration": 1.5, "text_position": "center"},
{"type": "ai_video", "duration": 7.0, "transition_in": "fade"},
{"type": "outro", "duration": 1.5, "logo": true}
],
"aspect_ratio": "9:16",
"music": {"genre": "upbeat", "volume": 0.4}
}
Backend собирает клип по шаблону через MoviePy или FFmpeg, мобильный клиент только отображает превью и результат.
Прогресс многоэтапного пайплайна
Пользователь должен видеть, на каком этапе находится его клип:
-
Генерация видео...(30–90 сек) -
Подбор музыки...(5–10 сек) -
Монтаж...(10–20 сек) -
Готово!
Реализуем через WebSocket или SSE: сервер шлёт события по мере завершения каждого этапа. На iOS — URLSessionWebSocketTask, на Android — OkHttp WebSocket. Это лучше, чем polling, при многоэтапных задачах: меньше запросов, более точный прогресс.
Прямая публикация в TikTok/Instagram
TikTok Content Posting API позволяет публиковать видео прямо из приложения без сохранения в галерею. Instagram Graph API — для Reels. Оба требуют OAuth авторизацию пользователя и одобрение приложения на платформе (для TikTok — Content Posting API scope).
На iOS: после монтажа — PHAsset + UISaveVideoAtPathToSavedPhotosAlbum для сохранения в Camera Roll, или прямой share через UIActivityViewController. Deep link в TikTok для публикации — tiktok://open с Universal Link.
Сроки
Базовая интеграция с генерацией и показом результата — 5–7 дней. Полный клип-мейкер с шаблонами, on-device монтажом, музыкой и шаринг-интеграцией — 4–6 недель. Стоимость рассчитывается индивидуально.







