FFmpegKit: Прощание с незаменимым инструментом для медиа в ваших приложениях

23 Jun, 2025

Это архивный репозиторий и может быть устаревшим.

5,835
🔱 2,535
👥 1

Знакомая ситуация: вы нашли идеальный инструмент, который решает кучу ваших проблем, интегрировали его в свои проекты, а потом... бац! Проект объявляет о своем закрытии. Именно такая новость настигла многих разработчиков, активно использовавших FFmpegKit — мощную библиотеку для работы с FFmpeg в кроссплатформенных приложениях.

Да, вы не ослышались. FFmpegKit, который облегчал жизнь тысячам разработчиков на Android, iOS, Flutter, React Native и других платформах, официально уходит на покой. Разработчики объявили, что новых релизов не будет, а уже выпущенные бинарники будут удалены по графику: версии до 6.0 — к 1 февраля 2025 года, а версия 6.0 — к 1 апреля 2025 года. Это, конечно, грустно, но давайте разберемся, что это был за проект, почему он был так важен и что теперь делать тем, кто на него полагался.

Что такое FFmpegKit и почему он был так хорош?

FFmpeg — это швейцарский нож для работы с медиа. Кодирование, декодирование, конвертация, стриминг, фильтрация — он умеет практически всё. Но есть нюанс: интегрировать FFmpeg в мобильные или кроссплатформенные приложения — задача не для слабонервных. Это требует компиляции нативных библиотек под разные архитектуры, управления зависимостями и написания оберток для взаимодействия с FFmpeg из вашего кода.

Именно эту боль и решал FFmpegKit. Он был не просто оберткой, а целой экосистемой, которая позволяла легко и непринужденно использовать мощь FFmpeg в ваших приложениях на:

  • Нативных платформах: Android, iOS, Linux, macOS, tvOS
  • Гибридных платформах: Flutter, React Native

Представьте: вам нужно обрезать видео прямо на устройстве пользователя, наложить водяной знак или конвертировать аудиофайл в другой формат. Без FFmpegKit это был бы целый квест с многочасовыми поисками и настройками. С FFmpegKit же это сводилось к нескольким строчкам кода и вызову команды FFmpeg через удобный API.

Реклама

Ключевые возможности, которые мы ценили

FFmpegKit выделялся на фоне других решений благодаря нескольким важным аспектам:

1. Кроссплатформенность без головной боли

Это, пожалуй, главная фишка. Разработчики мобильных приложений знают, как сложно поддерживать один и тот же функционал на Android и iOS, а уж тем более на Flutter или React Native. FFmpegKit предоставлял унифицированный подход, позволяя использовать FFmpeg на всех этих платформах, минимизируя дублирование кода и сложности с интеграцией.

2. Готовые бинарники и гибкие сборки

FFmpegKit предлагал 8 различных предварительно собранных пакетов, доступных через популярные менеджеры зависимостей (Maven Central, CocoaPods, pub, npm). Это было настоящим спасением, так как ручная сборка FFmpeg под все нужные архитектуры и с необходимыми кодеками — задача титаническая. Были пакеты для минимальной функциональности (min), для работы с HTTPS (https), для аудио (audio), видео (video) и, конечно, full версии с максимальным набором возможностей. При этом можно было выбрать между LGPL и GPL лицензиями, что давало дополнительную гибкость.

3. Удобная обертка для команд FFmpeg

Вместо того чтобы напрямую вызывать системные команды FFmpeg, FFmpegKit предоставлял высокоуровневую обертку. Это означало, что вы могли запускать команды FFmpeg/FFprobe, используя нативные API своего языка:

  • Java API для Android
  • Objective-C API для iOS, macOS, tvOS
  • Dart API для Flutter
  • C++ API для Linux
  • JavaScript API (с TypeScript определениями) для React Native

Это делало работу с FFmpeg гораздо более безопасной, предсказуемой и интегрированной в экосистему вашего приложения.

4. Возможность кастомной сборки

Если готовых пакетов было недостаточно, FFmpegKit предоставлял скрипты для самостоятельной сборки нативных библиотек FFmpeg. Это позволяло разработчикам включать или отключать определенные системные и внешние библиотеки, точно настраивая FFmpeg под свои нужды.

Под капотом: немного технических деталей

FFmpegKit был основан на FFmpeg версии v4.5-dev или новее, что обеспечивало доступ к актуальным возможностям и улучшениям. Различные пакеты включали широкий спектр внешних библиотек, таких как x264, x265, dav1d для видеокодирования, lame, opus для аудио, gnutls для HTTPS и многие другие. Это позволяло решать самые разнообразные задачи, от простой конвертации до сложной обработки видео со стабилизацией (vid.stab) или работой с субтитрами (libass).

Кстати, стоит помнить о лицензировании. По умолчанию FFmpegKit распространялся под LGPL v3.0, но при включении библиотек, лицензированных под GPL, весь пакет становился GPL v3.0. И, конечно, всегда нужно было учитывать потенциальные патентные вопросы, связанные с некоторыми алгоритмами, используемыми в FFmpeg и его внешних библиотеках (например, x264, x265). Разработчики FFmpegKit всегда рекомендовали проконсультироваться с юристами по этим вопросам.

Практическое применение: где FFmpegKit сиял?

Представьте, какие задачи можно было решать с помощью FFmpegKit:

  • Мобильные видеоредакторы: Обрезка, склейка, наложение эффектов, изменение скорости воспроизведения видео прямо на смартфоне.
  • Аудиоприложения: Конвертация аудиоформатов, нормализация громкости, извлечение аудиодорожек из видео.
  • Стриминговые клиенты: Подготовка медиапотоков для загрузки или трансляции.
  • Приложения для работы с камерой: Запись видео с дополнительной обработкой в реальном времени или постфактум.
  • Офлайн-функциональность: Возможность обрабатывать медиа без необходимости отправлять данные на сервер, что критично для конфиденциальности и работы без интернета.

FFmpegKit позволял разработчикам создавать по-настоящему мощные и функциональные приложения, не углубляясь в дебри нативной компиляции и интеграции FFmpeg.

Что теперь? Куда бежать и где искать замену?

Итак, FFmpegKit официально уходит в историю. Это, безусловно, потеря для сообщества, но, как часто бывает в мире Open Source, свято место пусто не бывает. Разработчики FFmpegKit сами указывают путь: ищите поддерживаемые сообществом форки.

Если вы использовали FFmpegKit в своих проектах, не паникуйте. У вас есть время до апреля 2025 года, чтобы найти и перейти на альтернативные решения. Ищите форки на:

Это отличный пример того, как открытое сообщество может подхватывать и развивать важные проекты, когда оригинальные авторы решают отойти от дел. Возможно, именно один из этих форков станет новым стандартом для интеграции FFmpeg в кроссплатформенные приложения.

Выводы: Проект ушел, но идеи живут

FFmpegKit был ярким примером того, как можно упростить работу с чрезвычайно сложным, но мощным инструментом. Его уход — это напоминание о динамичности мира IT, где проекты приходят и уходят, но их идеи и решения продолжают жить в новых воплощениях.

Если вы только начинаете работать с медиа в своих приложениях, не бойтесь погружаться в мир FFmpeg. А если вы уже использовали FFmpegKit, то сейчас самое время изучить его наследников и, возможно, даже внести свой вклад в их развитие. Ведь именно в этом и заключается сила Open Source!

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.