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

Відео в застосунку сповільнює завантаження й псує враження від продукту сильніше, ніж здається зі звітів. Ми розробляємо AI-покращення відео під ключ: знаходимо, де саме втрачається якість, добираємо режим оброблення й доводимо результат до стабільного. Зменшуємо частку відмов під час перегляду та прискорюємо підготовку роликів.

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

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

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

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

Штучний інтелект та ML у мобільних застосунках (CoreML, TFLite, LLM)Складний~2-4 тижні
Часті запитання

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

AI-покращення відео в мобільному застосунку майже завжди впирається в одне й те саме — у фізику самого телефона.

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

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

Падіння продуктивності видно одразу: шкала часу смикається, прев’ю відстає від пальця, смуга прогресу завмирає.

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

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

Окрема історія — обрив завантаження. Якщо покращення винесено на сервер, платформний рантайм на кшталт Core ML на пристрої не рятує: ролик іде цілком, і на перемиканні між мережами або в ліфті передача рветься на середині.

Користувач бачить не «продовжимо з місця зупинки», а порожній екран і повторне надсилання матеріалу з нуля.

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

Розбираємо, як це закривається — що залишити на пристрої, що коректно винести на сервер і як зробити так, щоб тривалий процес пережив згортання застосунку.

Що змінюється після впровадження: вимірювані ефекти

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

Після — повторюємо той самий сценарій на тих самих моделях телефонів. Так ефект видно в цифрах, а не у відчуттях.

Час обробки. Моделі квантуються й виконуються прямо на пристрої через TensorFlow Lite та апаратний прискорювач, а не в хмарі: обробка кліпу переходить із десятків секунд в одиниці, попередній перегляд працює в реальному часі. Кадри не залишають телефон — канал зв’язку перестає бути вузьким місцем.

Частка успішних завантажень. Важкі проходи розбиті на етапи з контрольними точками: обрив зв’язку або згортання застосунку не обнуляють прогрес, завдання продовжується з останнього етапу.

Частка обробок, що доходять до кінця, зростає, а клас відмов «користувач закрив екран на середині» зникає разом із ручною перезйомкою.

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

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

Ще один клас відмов, що зник, — псування файлу при перериванні запису: результат зберігається в буфер і за будь-якої помилки повертається вихідне відео, а не порожній файл.

Режими обробки відео: на пристрої та в хмарі

Вибір режиму визначає не лише якість картинки, а й те, на якому парку пристроїв застосунок взагалі запуститься.

Локальний конвеєр не залежить від мережі, але впирається в клас апарата й нагрівання; хмарний дає однаковий результат на слабкому та флагманському пристрої, зате чутливий до каналу зв’язку. Нижче — як ми розділяємо варіанти за умовами застосовності.

Як обирають режим обробки

Варіант Коли підходить Обмеження
Обробка на пристрої Зйомка без мережі, короткі кліпи, вимоги до приватності кадрів Впирається в можливості апарата; тривалий прохід гріє корпус і садить батарею; на слабких моделях частина ефектів недоступна
Хмарна обробка Різнорідний парк пристроїв, важкі моделі підвищення деталізації та стабілізації Потрібен стійкий канал; результат приходить із затримкою; джерело передається цілком
Гібридна схема Базовий прохід потрібен одразу, важкий — з максимальною якістю Складніше в тестуванні: потрібен явний вибір точки передачі кадрів і правила відкату
Пакетна обробка після завантаження Результат не потрібен негайно, важливий підсумковий максимум якості Затримка до готовності, статуси та сповіщення, скасування завдання

Вимоги до каналу зв’язку рахуємо окремо для кожного режиму: профіль трафіку, ліміти мобільного інтернету, довантаження при переході в Wi-Fi, повтор при обриві.

Застосунок має деградувати до легшого режиму, а не падати: вимикаємо важкий прохід, показуємо чесний статус обробки, доводимо завдання після відновлення мережі.

Сумісність перевіряємо на парку пристроїв різного класу — включно з нестачею пам’яті та перериванням передачі на середині.

Етапи впровадження: від аудиту до передачі команді

Маршрут будуємо так, щоб кожен етап закінчувався перевірюваним артефактом — звітом, схемою, конфігурацією або заміром.

Тоді завдання «покращити відео» перетворюється на конкретні метрики: різкість на текстурах, шум у тінях, стійкість картинки між кадрами, час і нагрівання обробки.

  1. Аудит поточного рішення. Розбираємо, як відео потрапляє в застосунок: кодек, бітрейт, роздільні здатності на вході та виході, на якому кроці втрачається деталізація. Дивимося парк пристроїв — частка слабких моделей, доступність нейроприскорювача, поведінка під навантаженням і в теплі.
  2. Схема обробки. Визначаємо, де рахувати: на пристрої чи на сервері. Локальний шлях дає приватність і роботу без мережі, але обмежений за обчисленнями; серверний тягне важкі моделі, зате потребує каналу. Фіксуємо порядок кроків — шумозаглушення, стабілізація, деталізація, колір.
  3. Налаштування моделей покращення. Підбираємо набір під деградації саме вашого контенту: слабке світло, змаз від руху, артефакти перестиснення. Окремо налаштовуємо обличчя й текст — «пластикова» шкіра та зруйновані літери помітні одразу.
  4. Перевірка на живому трафіку. Вмикаємо на частині аудиторії керованим перемикачем і порівнюємо з контрольною групою: частка успішних обробок, час відгуку, нагрівання, відмови на слабких пристроях.
  5. Передача й навчання команди. Віддаємо конфігурації, скрипти замірів, регламент оновлення моделей і розбір граничних випадків, навчаємо змінювати параметри й читати метрики.

Артефакти проєкту: схеми, конфігурації, регламенти

Проєкт передаємо не в момент, коли збірка пройшла на нашому стенді, а коли команда замовника може зібрати реліз, пояснити поведінку обробки на конкретному відео й розібрати звернення користувача без нас.

Тому до комплекту входить не лише вихідний код, а й робоча документація по кожному шару системи — від захоплення кадру до видачі результату.

  • Схема обробки відео. Порядок кроків: захоплення, підготовка кадру, застосування покращення, збірка потоку, віддача в інтерфейс. За схемою видно, на якому етапі шукати причину, якщо користувач скаржиться на артефакти чи ривки.
  • Конфігурації збірки. Профілі для налагоджувальної та релізної версії, параметри якості обробки, точки підключення моделей. Правка одного профілю не зачіпає інші збірки й не змінює поведінку вже випущеної версії.
  • Політики доступу до даних користувачів. Які кадри та метадані залишають пристрій, де зберігаються, скільки живуть, які ролі мають доступ і як ведуться журнали звернень.
  • Регламент оновлення. Як випускається нова версія покращення, які перевірки якості обов’язкові перед випуском, як відкотитися на попередню, якщо зросла частка невдалих обробок.
  • Інструкції для підтримки. Розбір типових звернень — артефакти, затримка старту, нагрівання, відмова обробки — з покроковим зазначенням, що перевіряти й які дані запитувати в користувача.
  • Перевірний набір відео. Ролики з типовими умовами зйомки та еталонні результати: прогін на них показує, що оновлення не погіршило якість.
  • Документація по середовищу. Змінні збірки, залежності, порядок локального запуску й випуску — щоб новий інженер входив у проєкт за дні, а не тижні.

Усі матеріали лежать у репозиторії замовника разом з історією змін. Команда продовжує випускати оновлення й правити документацію сама, без звернення до нас.

Кейс: як скоротили відмови при завантаженні роликів

До переробки застосунок готував ролик цілком на пристрої й лише потім надсилав його на сервер.

Користувач чекав до кількох хвилин, при обриві зв’язку прогрес обнулявся, а на пристроях середнього сегмента завдання нерідко не доходило до кінця: корпус грівся, система закривала застосунок.

Успішно публікувалися 68% завантажень, на слабких пристроях — 54%, підтримка розбирала 40–60 скарг на тиждень.

Де було вузьке місце

Розбір показав, що річ не в мережі, а в схемі: повторна передача починалася з нуля, обробка йшла в одному потоці з інтерфейсом, а зібрані фрагменти не зберігалися між запусками. На довгих роликах це давало до чотирьох спроб на одну публікацію.

Що перебудували

Завантаження розбили на фрагменти з довантаженням: обрив зв’язку більше не відкочує прогрес, а передача йде через найближчий вузол Cloudflare.

Важку обробку перенесли на сервер, на пристрої залишили полегшений попередній перегляд, а кількість одночасних завдань обмежили за нагріванням і зарядом.

Що стало

Частка успішних завантажень зросла з 68% до 96%, на середньому сегменті — з 54% до 92%. Скарги на «завантажив, а ролика немає» скоротилися до поодиноких на тиждень, нагрівання та витрата батареї при публікації помітно впали. Оновлення перевірили на парку пристроїв і випустили за шість тижнів від старту робіт.

Що робити, якщо обробка вже йде на сервері?

Якщо покращення відео вже працює на сервері, переписувати контур цілком не потрібно — спочатку ділимо обробку за складністю проходу. Шумозаглушення, стабілізація та кольорокорекція переносяться на пристрій, підвищення деталізації й відновлення кадрів залишаються на сервері.

Схему обирають за парком пристроїв і довжиною запису.

Варіант Коли підходить Обмеження
Повне перенесення на пристрій Флагманські моделі, короткі ролики На слабких пристроях обробка довша, витрата батареї вища
Гібрид: легкі проходи локально, важкі на сервері Змішаний парк пристроїв У запит додається ознака версії застосунку
Проміжне зберігання на сервері Повторна обробка, обриви мережі Потрібні правила видалення й ліміт обсягу
Серверний шлях як резервний Період перемикання, відкат Час відгуку більший, ніж при локальній обробці

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

Зворотна сумісність тримається на незмінному форматі відповіді: застосунок попередніх версій отримує готове відео й не знає, де його оброблено.

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

Сумніви щодо навантаження, якості та сумісності

Сумніви тут зазвичай одні й ті самі: чи не сяде батарея, чи потягне застосунок на пристроях, які реально в людей, чи не витечуть кадри користувача, наскільки важчою стане збірка й скільки підтримки потребуватиме рішення. Кожен пункт закривається конкретним налаштуванням і замірами, а не обіцянками.

Чи не сяде батарея?

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

Що буде на слабких пристроях?

Профіль обробки вибирається за можливостями конкретної моделі: нижча якість, коротший фрагмент. Якщо ресурсів не вистачає, завдання йде на сервер або функція акуратно вимикається — інтерфейс залишається робочим, зйомка не переривається.

Як із приватністю кадрів?

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

Наскільки зросте збірка?

Моделі не вшиваються в інсталяційний пакет цілком: вони підвантажуються на вимогу й кешуються. Ті, кому функція не потрібна, не платять за неї ні часом встановлення, ні розміром оновлень.

Скільки підтримки потребуватиме рішення?

Основне — оновлення моделей і регресійні прогони на парку реальних пристроїв. Набір тестових сценаріїв, метрики якості та інструкції з оновлення передаємо разом із кодом, щоб супровід не залежав від нас.

Обговоримо завдання: надішліть поточну схему обробки

Щоб розбір спирався на факти, а не на припущення, а оцінка й план робіт вийшли реалістичними, корисно надіслати кілька ввідних. Ніщо з цього не потребує підготовки окремого проєкту — достатньо того, що вже є під рукою в команди, яка веде застосунок.

  • Поточна схема обробки: де саме рахуються кадри — на пристрої, на сервері чи гібридно, які кроки йдуть по порядку і на якому з них втрачається якість.
  • Перелік цільових пристроїв: хоча б основний десяток моделей, включно з найслабшими з тих, де застосунок реально встановлено, — від них залежить вибір режиму обробки.
  • Метрики скарг: частка роликів з артефактами, відвали на етапі завантаження й експорту, скільки часу проходить від зйомки до готового файлу і як ці цифри рахуються зараз.
  • Приклади проблемних роликів: 5–10 вихідників разом із результатом після обробки — за парою таких наборів видно, який клас дефектів відтворюється стабільно.
  • Очікувані терміни: до якої дати потрібен результат і чи є прив’язка до публікації чергового оновлення.
  • Обмеження, про які варто сказати одразу: приватність користувацьких відео, вимоги до роботи офлайн, доступна частка навантаження на батарею.

Опишіть завдання й додайте те, що є, — повернемося з оцінкою, планом робіт і зрозумілим порядком кроків.

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

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

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714