Реалізація AI-покращення якості відео у мобільному застосунку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація AI-покращення якості відео у мобільному застосунку
Складний
~2-4 тижні
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Покращення якості відео через AI у мобільних додатках

Покращення якості відео—принципово інша задача від покращення фото. Фото можна обробляти секундами: користувач почекає. Відео вимагає або реального часу (запис/стрімінг), або прийнятної швидкості постобробки (умовно: ролик 1 хвилина за 2–3 хвилини). Це диктує вибір моделі та архітектуру рішення.

Два режими—різні архітектури

Постобробка записаного відео—проходимо відеофайл кадр за кадром через декодер, обробляємо ML-моделлю, енкодуємо назад. Швидкість важлива, реального часу не потрібно.

Real-time покращення при записі або перегляді—суворий бюджет 33 мс на кадр при 30 fps. Складні моделі не влізуть. Потрібна компромісна якість.

Більшість клієнтських задач—перший режим: користувач записав старе відео або завантажив файл, натиснув «покращити».

Постобробка на iOS: AVAssetReader + Metal + Core ML

// Читаємо відео як послідовність CVPixelBuffer
let asset = AVAsset(url: videoURL)
let reader = try AVAssetReader(asset: asset)
let output = AVAssetReaderTrackOutput(
    track: asset.tracks(withMediaType: .video).first!,
    outputSettings: [kCVPixelBufferPixelFormatTypeKey as String: kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange]
)
reader.add(output)
reader.startReading()

// Паралельно—writer для результату
let writer = try AVAssetWriter(outputURL: resultURL, fileType: .mp4)
let writerInput = AVAssetWriterInput(mediaType: .video, outputSettings: videoSettings)
let adaptor = AVAssetWriterInputPixelBufferAdaptor(assetWriterInput: writerInput, ...)

На кожному кадрі: конвертуємо YUV → RGB (Metal shader), прогоняємо через Core ML модель, конвертуємо RGB → YUV, пишемо у AVAssetWriter. Конвертація через Metal критична—на CPU це 15–20 мс на кадр лише на кольоровий простір.

Яка модель? Для денойзингу відео—RVRT або BasicVSR++ (temporal super resolution, враховують сусідні кадри). Але вони потребують батчу кадрів і на мобіль у оригіналі не йдуть. Компроміс—per-frame моделі типу Real-ESRGAN (ігнорують часову узгодженість, простіше у розгортанні) або легкі temporal-моделі з вікном 3–5 кадрів.

Temporal flickering—головна проблема per-frame підходу: сусідні кадри обробляються незалежно, деталі на стиках «миготять». Рішення—temporal consistency loss при fine-tuning або постобробка: усереднення активацій між сусідніми кадрами з вагою 0.1–0.2.

Android: MediaCodec + TFLite

// Використовуємо MediaCodec для декодування
val decoder = MediaCodec.createDecoderByType(format.getString(MediaFormat.KEY_MIME)!!)
decoder.configure(format, null, null, 0)

// Поверхня для декодування прямо у текстуру OpenGL
val surface = Surface(surfaceTexture)
decoder.configure(format, surface, null, 0)
decoder.start()

На Android декодування у Surface → обробка через OpenGL/Vulkan compute → назад через MediaCodec encoder. TFLite GPU Delegate працює з текстурами OpenGL прямо через setExternalContext(), що видаляє одну копію пам'яті на кадр.

Для Full HD (1920×1080) плиткова нарізка 256×256 дає ~48 плиток. При інференсі 15 мс/плитка—720 мс на кадр. Тобто постобробка хвилини відео (1800 кадрів) займе ~22 хвилини. Прийнятно для редактора, неприйнятно для quick-enhance. Для quick-enhance—легка модель (2–4 MB TFLite), без плиткування, з downscale на 540p для інференцу.

Real-time денойзинг при записі

Якщо потрібен real-time—працюємо зі зменшеним дозволом. Моделі, навчені на 360p/480p вході, дають результат швидко. На iPhone 14 Pro—ESRGAN x2 на 480p вході ~28 мс через ANE. Android Snapdragon 8 Gen 2—порівняно через GPU Delegate.

Для CameraX з користувацькою обробкою—ImageAnalysis use case з setBackpressureStrategy(STRATEGY_KEEP_ONLY_LATEST): не копимо чергу, якщо обробка не встигає.

Не ламемо аудіо

Відеоконвеєр обробляє лише відео-трек. Аудіо копіюється через AVAssetReaderTrackOutput / MediaExtractor без змін. Типова помилка—забути синхронізувати PTS (presentation timestamps) між аудіо та оброблювачем відео трека. AI-обробка не змінює тривалість кадрів, PTS з оригіналу переносимо один до одного.

Процес

Аналіз цільових сценаріїв (постобробка vs real-time), вибір моделі з вимірюванням на цільових пристроях, реалізація декодування/кодування через AVFoundation/MediaCodec, ML конвеєр з плиткуванням або без, тестування на граничних випадках—HDR відео, нестандартні дозволи, поворот.

Кошторис за часом

Постобробка на одній платформі з per-frame моделлю займає 3–5 тижнів. Обидві платформи з часовою узгодженістю та real-time режимом вимагають 8–14 тижнів.