Інтеграція FFmpeg для обробки медіа в мобільному додатку

Вбудованих фреймворків недостатньо для складної обробки відео безпосередньо на пристрої, а відправлення на сервер — це довго та дорого. Ми інтегруємо FFmpeg у ваш мобільний застосунок на iOS, Android та Flutter, налаштовуємо оптимальну збірку та підключаємо апаратне прискорення. Наша команда реалізує проєкт під ключ — від аудиту до супроводу, забезпечуючи стабільну роботу та відповідність вимогам магазинів застосунків.

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція FFmpeg для обробки медіа в мобільному додатку
Складний
~3-5 днів
Часті запитання

Чому FFmpeg на мобільному пристрої?

Ви розробляєте додаток для редагування відео, і вбудованих фреймворків (AVFoundation, MediaCodec) не вистачає. Потрібна обрізка з покадровою точністю, конкатенація кількох роликів, апаратне прискорення та гнучкі налаштування кодування. Відправляти відео на сервер — довго й дорого, а користувачі вимагають приватності. FFmpeg вирішує ці задачі прямо на пристрої. Ми інтегруємо його в iOS, Android та Flutter, налаштовуємо оптимальну збірку ffmpeg-kit і підключаємо апаратні кодери VideoToolbox або MediaCodec. Це знижує навантаження на CPU і прискорює обробку в 5–10 разів. За роки роботи ми провели понад 50 успішних інтеграцій медіапроцесингу, гарантуємо сумісність з вимогами App Store і Google Play — включаючи оптимізацію розміру додатку та дотримання ліцензій.

Які задачі вирішує FFmpeg на мобільному?

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

Операція Приклад команди Застосування
Транскодування -c:v libx264 -preset ultrafast -crf 23 Стиснення відео перед завантаженням
Обрізка (frame-accurate) -ss 00:00:10 -to 00:00:30 Створення кліпів
Конкатенація -f concat -safe 0 -i filelist.txt -c copy Об'єднання кількох роликів
Витяг аудіо -vn -acodec copy Отримання доріжки для подкасту
Накладення водяного знаку -filter_complex "overlay=W-w-10:H-h-10" Брендування контенту
Зміна гучності -af volume=0.5 Нормалізація звуку
Вставка зображення -i image.png -filter_complex overlay Накладення логотипу на відео

Для швидкої обрізки використовуйте -c copy — без перекодування, точність до ключового кадру. Для покадрової точності — без -c copy, але це довше. В UI варто дати вибір: «Швидка обрізка» та «Точна обрізка».

Як вибрати оптимальну збірку ffmpeg-kit?

Вибір збірки ffmpeg-kit безпосередньо впливає на розмір додатку та доступний функціонал. Мінімальна збірка (min) важить 8–12 МБ і включає базові кодекси (H.264, AAC) — вистачить для обрізки та конвертації. Якщо потрібна підтримка HTTPS (наприклад, завантаження файлів по мережі) — обирайте збірку https. Для роботи з H.265, VP9 або аудіокодеками FLAC/opus потрібна full (~50 МБ). Для проектів під GPL-сумісною ліцензією використовуйте full-gpl. Ми рекомендуємо збірку https як оптимальний баланс функціоналу та розміру. Детальніше про варіанти можна дізнатися в документації ffmpeg-kit.

Збірка Розмір Кодекси Особливості
min 8–12 МБ H.264, AAC Базова, без мережі
https 12–15 МБ + HTTPS Для завантаження/скачування
full до 50 МБ Всі Всі кодекси, важка
full-gpl до 50 МБ Всі GPL-ліцензія

Як підключити FFmpeg до проекту?

iOS. ffmpeg-kit з CocoaPods — мінімальне налаштування за 15 хвилин:

// Podfile
pod 'ffmpeg-kit-ios-https', '~> 6.0'

// Використання
FFmpegKit.executeAsync("-i input.mp4 -vn -acodec copy output.aac") { session in
    guard let returnCode = session?.getReturnCode() else { return }
    if ReturnCode.isSuccess(returnCode) {
        print("Готово: \(session?.getOutput() ?? "")")
    } else {
        print("Помилка: \(session?.getLogsAsString() ?? "")")
    }
}

Android. Через Maven:

implementation("com.arthenica:ffmpeg-kit-android-https:6.0.LTS")
FFmpegKit.executeAsync(
    "-i input.mp4 -vf scale=1280:720 -c:v libx264 -preset ultrafast -crf 23 output.mp4"
) { session ->
    if (ReturnCode.isSuccess(session.returnCode)) {
        // обробляємо результат на main thread
    }
}

Flutter. Встановлення пакета ffmpeg_kit_flutter з pub.dev — Dart-обгортка, ідентична нативному API.

Моніторинг прогресу обробки

FFmpeg пише прогрес в stderr. ffmpeg-kit надає StatisticsCallback, де getTime() повертає поточну позицію в мілісекундах. Загальну тривалість отримуємо через FFprobeKit.getMediaInformationAsync.

FFmpegKit.executeAsync(command, withCompleteCallback: { session in
    /* завершено */
}, withLogCallback: nil, withStatisticsCallback: { stats in
    guard let duration = totalDurationMs else { return }
    let progress = Double(stats?.getTime() ?? 0) / duration
    DispatchQueue.main.async {
        self.progressBar.progress = Float(progress)
    }
})

Як інтегрувати FFmpeg: покрокове керівництво

  1. Вибір збірки. Визначте необхідні кодекси та протоколи. Для типового додатку — https.
  2. Підключення. Додайте залежність у проект (CocoaPods, Maven або pub.dev). Протестуйте базову команду, наприклад, отримання інформації про файл.
  3. Налаштування продуктивності. Увімкніть апаратне прискорення через h264_videotoolbox (iOS) або h264_mediacodec (Android) з fallback на програмний кодек.

Наприклад, у нашому проекті для відеоредактора ми зіткнулися з повільною обробкою: транскодування 1-хвилинного відео 1080p через libx264 ultrafast на iPhone 14 Pro займало 45–60 секунд. Для UX це багато. Ми використали апаратні кодери: на iOS — h264_videotoolbox (через VideoToolbox) — у 5–10 разів швидше, але менше контролю над бітрейтом. На Android — h264_mediacodec (через MediaCodec) — аналогічно. Додали fallback на програмний кодек:

val command = if (isHardwareEncoderAvailable()) {
    "-i input.mp4 -c:v h264_mediacodec output.mp4"
} else {
    "-i input.mp4 -c:v libx264 -preset ultrafast output.mp4"
}

Розмір бінарника: збірка full додає 30–50 МБ до додатку, min — 8–12 МБ. Вибираємо мінімальну під конкретні задачі.

Що входить в інтеграцію?

  • Підбір та налаштування оптимальної збірки ffmpeg-kit (з урахуванням ліцензій та розміру).
  • Розробка API для команд (транскодування, обрізка, конкатенація тощо).
  • Інтеграція моніторингу прогресу та відображення в UI.
  • Підтримка апаратного прискорення з fallback.
  • Конфігурація ProGuard/R8 (Android) для мініфікації.
  • Документація з використання.
  • Тестування на 5+ реальних пристроях.
  • Підтримка після деплою протягом 30 днів.

Інтеграція FFmpeg знижує витрати на серверну обробку до 40%, економлячи бюджет на інфраструктурі. Окупається протягом 2–3 місяців. Зв'яжіться з нами для оцінки вашого проекту — ми підготуємо пропозицію за 1 день. Замовте консультацію, щоб обговорити деталі та отримати індивідуальний план робіт.

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

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

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