Реализация AI-редактирования видео в мобильном приложении
AI-редактирование видео — широкий термин, который на практике распадается на несколько отдельных функций: автоматическое удаление пауз и слов-паразитов, замена фона, цветокоррекция по референсу, умная обрезка под формат, автонарезка хайлайтов. Каждая функция требует своего технического решения.
Автовырезка пауз и слов-паразитов
Это, пожалуй, самая востребованная функция для контент-мейкеров. Пользователь записывает разговорное видео, AI удаляет все паузы длиннее 0.5 сек и слова «эм», «ну», «как бы».
Пайплайн:
- Транскрибируем аудио через Whisper API (OpenAI) или Deepgram
- Получаем JSON с timestamps каждого слова
- Находим паузы и слова из стоп-листа
- Генерируем 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"]
# Конвертируем в FFmpeg select/aselect фильтр
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 — достаточно для плавных cuts. На мобиле: загружаем видео, запускаем backend-задачу, получаем обработанный файл. Всё обработанное видео воспроизводим через AVPlayer/ExoPlayer.
Замена фона в видео
Сложнее, чем кажется. Для статичной камеры — portrait segmentation через MediaPipe Selfie Segmentation (30 fps real-time на современных устройствах). Для движущейся камеры с объектами — SAM 2 (Segment Anything Model 2) через API.
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/Vulkan, заменяем фон на статичное изображение или видео-фон. При 1080p 30fps — требуется GPU рендеринг, CPU не справится.
Серверная обработка (SAM 2): лучшее качество для сложных сцен, но 2–5 минут на минуту видео даже на A100.
Умная обрезка под формат (Auto Reframe)
Конвертация 16:9 в 9:16 с умным кропом — задача object tracking. Adobe Premiere Pro называет это Auto Reframe. На мобиле реализуем через:
- Face detection по каждому keyframe (каждые 0.5 сек) —
VNDetectFaceRectanglesRequest - Построение trajectory движения субъекта
- Плавное панорамирование кадра с EasingCurve (не резкие jump cuts)
- 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-координата субъекта из tracking data. Реализация: Python-скрипт на backend генерирует FFmpeg команду с нужными параметрами, выполняет её, возвращает результат.
AI цветокоррекция
По референс-фото — CinematicLUT через Core Image на iOS (100 ms на кадр). По текстовому описанию («сделай как утренний золотой час») — вызов к backend с LUT-генерацией через Stable Diffusion + ControlNet Color Pipeline.
Применение LUT ко всему видео через FFmpeg: -vf lut3d=lut_file.cube. Создание .cube файла из референс-изображения — специализированный алгоритм на Python/OpenCV.
Мобильный редактор: архитектурные решения
Timeline editor на мобиле — нетривиальная UI-задача. Минимальный стек:
- iOS:
AVMutableCompositionдля timeline,AVVideoCompositionдля эффектов,AVAssetExportSessionдля экспорта - Android:
MediaCodec+MediaMuxerдля низкоуровневой обработки, илиTransformerиз Media3 (ExoPlayer) — проще для типичных задач
Media3 Transformer позволяет применять эффекты (обрезка, скорость, цвет) в одном проходе с GPU-ускорением через OpenGL ES. На практике удобнее, чем самостоятельная работа с MediaCodec.
Сроки
Одна функция (авторезка пауз или замена фона) — 1–2 недели. Полноценный AI-редактор с несколькими функциями, timeline и экспортом — 6–10 недель. Стоимость рассчитывается индивидуально.







