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

Чому FFmpeg на мобільному пристрої? Ви розробляєте додаток для редагування відео, і вбудованих фреймворків (AVFoundation, MediaCodec) не вистачає. Потрібна обрізка з покадровою точністю, конкатенація кількох роликів, апаратне прискорення та гнучкі налаштування кодування. Відправляти відео на серв

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

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

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

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

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

Часті запитання

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    896
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    598

Чому 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 день. Замовте консультацію, щоб обговорити деталі та отримати індивідуальний план робіт.