Реалізація AI-покращення якості відео в мобільному додатку
Клієнти часто приходять з відеофайлами, знятими на старі камери або стисненими для економії місця: 480p, бітрейт 1 Мбіт/с, шуми в тінях. Завдання — підняти якість до 1080p, прибрати артефакти стиснення, стабілізувати тремтіння. Обробка фото тут не працює: відео — це 30 кадрів на секунду, кожен кадр потрібно обробити швидко, зберігаючи узгодженість між ними. Рішення розпадається на два режими: постобробка (ролик 1 хвилина за 2–3 хвилини) та real-time (33 мс на кадр при 30 fps). Ми реалізували десятки таких пайплайнів для iOS та Android — від простого апскейлінгу до комплексного temporal-покращення. Замовте розробку AI-покращення відео: ми підберемо архітектуру під ваш сценарій.
Як вибрати модель для мобільного пристрою?
Вибір моделі визначається цільовою роздільною здатністю та доступним залізом. Для постобробки використовуємо per-frame моделі (наприклад, Real-ESRGAN) — вони прості в деплої, але страждають temporal flickering. Temporal-моделі (BasicVSR++ з вікном 3–5 кадрів) дають плавний результат, але вимагають батчевої обробки та більше пам'яті. На мобільних пристроях ми застосовуємо полегшені версії з тайлінгом 256×256. Для real-time — легкі кастомні моделі (2–4 МБ), розраховані на вхід 360–480p та прискорення через Core ML або TFLite GPU Delegate.
Реалізація на iOS та Android
iOS: Використовуємо AVAssetReader для декодування в CVPixelBuffer, конвертуємо YUV→RGB через Metal shader, прогоняємо через Core ML модель, конвертуємо назад та пишемо через AVAssetWriter. Конвертація через Metal критична — на CPU це 15–20 мс на кадр тільки на колірний простір. Для денойзингу застосовуємо Real-ESRGAN або temporal-моделі. Temporal flickering прибираємо постпроцесингом: усереднення активацій сусідніх кадрів з вагою 0.1–0.2.
Android: Декодування через MediaCodec в Surface (текстуру OpenGL), обробка TFLite з GPU Delegate (працює безпосередньо з текстурами через setExternalContext()). Для Full HD тайлова нарізка 256×256 дає ~48 тайлів, при інференсі 15 мс/тайл — 720 мс на кадр. Для quick-enhance — легка модель без тайлінгу, downscale до 540p.
Чому temporal consistency важлива?
Незалежна обробка кожного кадру призводить до мерехтіння: деталі то з'являються, то зникають на межах. Ми вирішуємо це двома способами: використовуємо temporal-моделі з вікном 3–5 кадрів або додаємо постпроцесинг з усередненням активацій. У результаті відео виглядає природно, без flickering. Часова узгодженість — ключова відмінність професійного рішення від простого апскейлінгу.
Real-time та аудіо
Для real-time працюємо зі зменшеною роздільною здатністю: на iPhone 14 Pro — ESRGAN x2 на 480p (~28 мс через ANE), на Snapdragon 8 Gen 2 — через GPU Delegate. Використовуємо CameraX з ImageAnalysis та стратегією KEEP_ONLY_LATEST. Аудіо копіюється без змін: через AVAssetReaderTrackOutput або MediaExtractor, синхронізація PTS один до одного. Типова помилка — забути синхронізувати PTS, що призводить до розсинхрону звуку.
Порівняння підходів
| Параметр | Per-frame модель | Temporal модель (вікно 5 кадрів) |
|---|---|---|
| Якість | Добра, але мерехтіння | Відмінна, без артефактів |
| Швидкість на Full HD | ~720 мс/кадр | ~1.5 с/кадр (батч 5) |
| Пам'ять | ~50 МБ | ~200 МБ |
| Простота деплою | Висока | Середня, потребує fine-tuning |
Що входить в роботу
| Етап | Тривалість | Опис |
|---|---|---|
| Аналіз сценаріїв | 1–2 дні | Визначаємо режими (постобробка/real-time), цільові пристрої, заміряємо продуктивність на еталонних пристроях. |
| Проектування пайплайну | 2–3 дні | Вибираємо модель, формат тайлінгу, архітектуру декодування/енкодування, спосіб синхронізації аудіо. |
| Реалізація | 3–8 тижнів | Кодимо декодер, ML-інференс, енкодер, temporal-постпроцесинг, інтеграція в проект. |
| Тестування | 1–2 тижні | Перевірка на 10+ пристроях (включаючи HDR, нестандартні роздільні здатності, поворот), стрес-тест граничних випадків. |
| Деплой та документація | 2–3 дні | Code Signing, TestFlight / Play Console, опис API та рекомендації щодо підтримки. |
Орієнтири за термінами
Постобробка на одній платформі з per-frame моделлю — 3–5 тижнів. Обидві платформи з temporal-узгодженістю та real-time режимом — 8–14 тижнів. Вартість розробки розраховується індивідуально залежно від складності.
Отримайте консультацію щодо вашого проекту — ми проаналізуємо сценарії, підберемо оптимальну архітектуру та назвемо точні терміни. Працюємо під ключ з гарантією результату.







