Реалізація AI-редагування відео в мобільному застосунку
Замовник надсилає запис інтерв'ю: 15 хвилин, тридцять пауз і «ем» через слово. Вручну вирізати — втратити годину. Наш AI-пайплайн робить це за 30 секунд. Ми реалізували автоматичне вирізання, заміну фону, кольорокорекцію та розумний рефрейм для iOS та Android. У цій статті — як це працює технічно.
Які задачі вирішує AI-редагування
AI-редагування відео — не магія, а набір конкретних алгоритмів: автоматичне вирізання пауз і слів-паразитів, заміна фону, кольорокорекція за референсом, розумне обрізання під вертикальний формат. Кожна потребує свого стеку та архітектури. Розглянемо ключові.
Як працює автоматичне вирізання пауз?
Користувач записує розмовне відео. Ми транскрибуємо аудіо через Whisper API або Deepgram, отримуємо JSON з таймкодами кожного слова. Потім знаходимо паузи довші за 0.5 сек та слова зі стоп-листа («ем», «ну», «типу»). Генеруємо FFmpeg cut-list і збираємо підсумкове відео.
# Backend: генерація FFmpeg фільтра з транскрипції Whisper
def build_cut_filter(transcript_words, pause_threshold=0.5, filler_words=None):
filler_words = filler_words or {"ем", "ну", "от", "типа", "як би"}
segments_to_keep = []
prev_end = 0.0
for i, word in enumerate(transcript_words):
gap = word["start"] - prev_end
if gap > pause_threshold:
pass
if word["word"].lower().strip(".,!?") in filler_words:
continue
segments_to_keep.append((word["start"], word["end"]))
prev_end = word["end"]
filter_parts = "+".join(
f"between(t,{s},{e})" for s, e in merge_segments(segments_to_keep, gap=0.05)
)
return f"select='{filter_parts}',setpts=N/FRAME_RATE/TB"
Whisper з параметром word_timestamps=True дає точність ±20 ms — достатньо для плавних склейок. На мобільному пристрої відео завантажується на сервер, запускається задача, результат скачується. Відтворюємо через AVPlayer або ExoPlayer. Документація Whisper вказує на цю точність.
Чому заміна фону на мобільному — складна задача?
Для статичної камери використовуємо MediaPipe Selfie Segmentation — працює в реальному часі (30 fps) на сучасних пристроях. Для камери, що рухається, з кількома людьми — серверна обробка через SAM 2 (Segment Anything Model 2). SAM 2 у 3 рази точніший за MediaPipe, але потребує сервера.
MediaPipe на Android:
val options = ImageSegmenterOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setOutputCategoryMask(false)
.setOutputConfidenceMasks(true)
.build()
val segmenter = ImageSegmenter.createFromOptions(context, options)
Результат — маска впевненості від 0 до 1. Застосовуємо до кожного кадру через Metal (iOS) або Vulkan (Android). Для 1080p 30fps GPU обов'язковий — CPU не тягне. Серверна обробка через SAM 2 дає кращу якість, але займає 2–5 хвилин на хвилину відео навіть на A100.
Розумне обрізання під формат (Auto Reframe)
Конвертація 16:9 у 9:16 з розумним кропом — задача трекінгу об'єктів. На мобільному пристрої:
- Face detection по кожному ключовому кадру (кожні 0.5 сек) —
VNDetectFaceRectanglesRequestна iOS - Побудова траєкторії руху суб'єкта
- Плавне панорамування з ease-функцією
- FFmpeg
cropфільтр з динамічними параметрами
# FFmpeg: кроп з рухом (x змінюється від 0 до 540 за 10 сек)
ffmpeg -i input.mp4 \
-vf "crop=608:1080:'min(max(cx-304,0),672)':0" \
-c:v libx264 output_9x16.mp4
cx — x-координата суб'єкта з трекінг-даних. На сервері Python-скрипт генерує FFmpeg-команду, виконує і повертає результат.
AI-кольорокорекція
За референс-фото застосовуємо CinematicLUT через Core Image на iOS (близько 100 мс на кадр). За текстовим описом («зроби як золота година») — виклик до сервера з генерацією LUT через Stable Diffusion + ControlNet. Готовий .cube файл застосовуємо до відео через FFmpeg: -vf lut3d=lut_file.cube.
Мобільний редактор: архітектура
Timeline editor — нетривіальна UI-задача. Мінімальний стек:
- iOS:
AVMutableCompositionдля треків,AVVideoCompositionдля ефектів,AVAssetExportSessionдля експорту - Android:
MediaCodec+MediaMuxerдля низькорівневої обробки абоMedia3 Transformer(рекомендуємо)
Media3 Transformer дозволяє застосовувати обрізання, зміну швидкості, кольору в одному проході з GPU-прискоренням через OpenGL ES. Це простіше, ніж самостійна робота з MediaCodec.
Архітектура timeline в деталях
Timeline будується на шарах: відеодоріжка, аудіодоріжка, шар ефектів. Кожен кліп — об'єкт з часовою шкалою. Ефекти (обрізати, прискорити, замінити фон) застосовуються через AVVideoComposition або Media3 Transformer. Ми використовуємо патерн Command для історії змін.
Порівняння підходів: on-device vs сервер
| Критерій | On-device (MediaPipe, Core Image) | Сервер (Whisper, SAM 2, FFmpeg) |
|---|---|---|
| Затримка | Реальний час (30 fps) | 2–5 хвилин на хвилину відео |
| Якість | Добре для типових сцен | Відмінне, навіть складні сцени |
| Залежність | GPU пристрою | Інтернет, GPU сервера |
| Вартість | Безкоштовно (обчислення на пристрої) | Оплата API або оренда GPU |
Вибір залежить від задачі: для масових функцій (автовирізання) підходить сервер, для редагування в реальному часі — on-device.
Що входить у роботу зі створення AI-редактора
Ми надаємо результат «під ключ»:
- Дослідження та вибір оптимального стеку під вашу задачу
- Реалізація backend (Python/FastAPI, Whisper, FFmpeg) та mobile SDK (iOS/Android)
- Інтеграція з наявним застосунком (код, залежності, документація)
- Налаштування StoreKit 2 / Billing 6 для підписок, якщо потрібно
- Тестування на 10+ реальних пристроях
- Завантаження в App Store та Google Play (допомога з Review Guidelines)
- Гарантія стабільної роботи 3 місяці після запуску
Наш досвід: 5+ років у мобільній розробці, 20+ проєктів з відео та AI, сертифіковані спеціалісти Apple та Google. Ми гарантуємо якість та дотримання строків.
Строки та вартість
- Одна функція (автовирізання або заміна фону) — 1–2 тижні, вартість від $5000
- Повноцінний редактор з кількома функціями, timeline та експортом — 6–10 тижнів, вартість від $25000
- Інтеграція в наявний застосунок — від $2000
- Вартість розраховується індивідуально після аналізу вимог. Напишіть нам — ми оцінимо ваш проєкт за 2 дні.
Замовте розробку AI-редактора відео для вашого мобільного застосунку. Отримайте консультацію з технічних деталей та строків.







