El FFmpeg Kit Flutter plugin original dejó de existir a principios de 2025, pero un fork comunitario llamado ffmpeg_kit_flutter_new retomó el desarrollo con soporte para Flutter 3+, FFmpeg 8.0 y la posibilidad de deployar builds personalizados que el proyecto original nunca terminó de resolver.

En 30 segundos

  • Taner Sener retiró oficialmente FFmpegKit el 6 de enero de 2025 por falta de tiempo y riesgo legal con patentes de Via-LA/MPEG LA
  • El repositorio original (arthenica/ffmpeg-kit) fue archivado el 23 de junio de 2025 — los binarios nativos ya no están disponibles
  • El fork ffmpeg_kit_flutter_new de Anton Karpenko (sk3llo) trae Android V2 bindings, FFmpeg v8.0.0 y soporte para builds custom
  • Alternativas sin FFmpeg: easy_video_editor (APIs nativas), media_kit (libmpv via dart:ffi), SDKs comerciales como IMG.LY
  • Licencia por defecto LGPL 3.0; si activás –enable-gpl pasás a GPL v3.0 con implicaciones para distribución en stores

El cierre de FFmpegKit: qué pasó y por qué importa

FFmpegKit fue durante años la forma estándar de meter procesamiento multimedia en apps Flutter, React Native y Android/iOS nativas. Un solo wrapper que te daba acceso a FFmpeg y FFprobe sin tener que compilar nada a mano. Funcionaba. La comunidad lo adoptó masivamente.

Hasta que dejó de funcionar.

Taner Sener anunció el retiro el 6 de enero de 2025. Las razones fueron dos: desde 2022 no tenía tiempo real para mantener el proyecto, y la adquisición de MPEG LA por Via-LA en 2023 metió un riesgo legal que no estaba dispuesto a asumir en solitario. Los codecs patentados (H.264, H.265, AAC) quedaron en una zona gris que un mantenedor individual simplemente no puede bancar.

El 23 de junio de 2025 se archivó el repositorio en GitHub. Los binarios precompilados se fueron eliminando progresivamente. Si tu proyecto dependía de ffmpeg_kit_flutter en pub.dev, de golpe te quedaste sin actualizaciones, sin soporte para nuevas versiones de Flutter, y con una dependencia muerta en tu pubspec.yaml.

El impacto fue masivo. Miles de apps en producción usaban FFmpegKit para transcodificar video, comprimir archivos, extraer audio o quemar subtítulos.

ffmpeg_kit_flutter_new: el fork comunitario que toma la posta

Anton Karpenko (sk3llo en GitHub) no se quedó esperando. Su fork ffmpeg_kit_flutter, publicado en pub.dev como ffmpeg_kit_flutter_new, retomó el desarrollo donde Sener lo dejó y sumó varias mejoras que la comunidad venía pidiendo.

Lo concreto:

  • Android V2 bindings (embedding API actualizado)
  • Compatibilidad con Flutter 3+ y Kotlin 1.8.22+
  • FFmpeg actualizado a v8.0.0
  • Soporte para Android, iOS y macOS
  • 25 librerías externas incluidas (dav1d, fontconfig, freetype, lame, libass, libvpx, libwebp, opus, entre otras)
  • 4 librerías GPL opcionales: vid.stab, x264, x265, xvidcore
  • Licencia LGPL 3.0 por defecto, con opción GPL v3.0

El punto fuerte es que resolvió un dolor histórico del proyecto original: el deploy de builds personalizados. El issue #713 del repo de arthenica documentaba la imposibilidad de usar archivos .aar locales para customizar la compilación. El fork de sk3llo lo soluciona con scripts automatizados de descarga y desempaquetado que simplifican todo el flujo.

Cómo deployar builds personalizados de FFmpeg Kit

Acá viene lo bueno. Si necesitás una compilación específica — ponele, solo los codecs que tu app realmente usa para reducir el tamaño del binario — el fork trae scripts dedicados por plataforma:

  • android.sh — compilación para Android con selección de arquitecturas (arm-v7a, arm-v7a-neon, arm64-v8a, x86, x86_64)
  • ios.sh — con soporte para VideoToolbox de Apple
  • macos.sh, linux.sh, tvos.sh — para el resto de plataformas soportadas

Cada script te permite habilitar o deshabilitar librerías individuales y elegir arquitecturas target. El flag --enable-gpl desbloquea las 4 librerías GPL (vid.stab, x264, x265, xvidcore), pero ojo: cambia la licencia de tu binario completo a GPL v3.0. Si te interesa, podés leer más sobre riesgos en la cadena de suministro CI/CD.

Para iOS, en tu Podfile especificás la variante. Si necesitás todos los codecs con GPL:

pod 'ffmpeg-kit-ios-full-gpl', '~> 8.0'

Hay 8 paquetes precompilados disponibles, cada uno con diferente combinación de librerías. Van desde min (lo mínimo indispensable) hasta full-gpl (todo incluido). También existen variantes LTS para proyectos que necesitan estabilidad sobre novedades.

Instalación y configuración paso a paso

En tu pubspec.yaml:

dependencies:
ffmpeg_kit_flutter_new: ^8.0.0

Android

API Level mínimo: 24. Kotlin 1.8.22 o superior. El plugin ya maneja las dependencias nativas automáticamente, pero si vas por un build custom, asegurate de que tu build.gradle apunte al repositorio Maven correcto.

iOS y macOS

Configurás la variante en el Podfile con el subspec correspondiente. Las arquitecturas soportadas incluyen arm64 y x86_64 (simulador). VideoToolbox viene habilitado por defecto en las variantes que lo soportan, lo cual te da aceleración por hardware para encoding/decoding H.264 y HEVC.

Un ejemplo básico de ejecución en Dart:

await FFmpegKit.execute('-i input.mp4 -c:v libx264 -preset fast output.mp4');

Para FFprobe (metadata sin transcodificar):

final session = await FFprobeKit.execute('-v quiet -print_format json -show_format input.mp4'); Si te interesa, podés leer más sobre mantener actualizados los parches de seguridad.

Variantes de paquetes y librerías externas

Fijate la tabla con las 8 variantes disponibles y qué incluye cada una:

PaqueteLibrerías externasGPLUso típico
minNingunaNoOperaciones básicas FFmpeg sin codecs externos
min-gplvid.stab, x264, x265, xvidcoreEncoding H.264/H.265 mínimo
httpsgmp, gnutlsNoStreaming HTTPS
https-gplgmp, gnutls + 4 GPLStreaming + encoding con GPL
audiolame, libilbc, libvorbis, opus, shine, soxr, speex, twolame, vo-amrwbencNoProcesamiento de audio
videodav1d, fontconfig, freetype, fribidi, kvazaar, libass, libiconv, libtheora, libvpx, libwebp, snappyNoProcesamiento de video sin codecs patentados
fullTodas las 25 librerías externasNoMáxima funcionalidad LGPL
full-gpl25 externas + 4 GPLTodo incluido, licencia GPL

La elección depende de tu caso. Si solo necesitás comprimir videos y no te importa el tamaño, full zafa perfecto. Si cada megabyte del APK cuenta, armá un build custom con solo lo que usás.

Alternativas a FFmpeg Kit para Flutter en 2026

No todo pasa por FFmpeg. Según tu caso de uso, capaz te conviene otra cosa.

easy_video_editor

Disponible en pub.dev, no depende de FFmpeg en absoluto. Usa APIs nativas del sistema operativo (MediaCodec en Android, AVFoundation en iOS) para trimming, merging, ajuste de velocidad y exportación. La ventaja: binario liviano, sin riesgo de patentes. La contra: funcionalidad limitada comparada con FFmpeg.

media_kit

Usa dart:ffi con libmpv por debajo. Más orientado a reproducción que a procesamiento, pero sirve si tu app necesita un player potente con soporte para múltiples formatos.

SDKs comerciales

IMG.LY y BytePlus ofrecen soluciones enterprise con soporte, SLA y manejo de licencias incluido. Si tu app genera ingresos y no querés lidiar con compilaciones ni riesgos legales, la opción comercial tiene sentido. No es barata, pero te saca el problema de encima.

Tapioca

Wrapper sobre Mp4Composer-android y AVFoundation. Sirve para edición de video básica (filtros, texto, audio overlay). Limitado pero funcional si no necesitás la potencia completa de FFmpeg.

Licencias y aspectos legales que tenés que conocer

El tema de las licencias fue justamente lo que mató al proyecto original. Conviene entenderlo bien antes de meter ffmpeg_kit_flutter_new en producción.

Por defecto, el fork usa LGPL 3.0. Eso significa que podés usarlo en apps propietarias siempre que no modifiques el código de la librería en sí, o si lo hacés, publiques esas modificaciones. El binario de tu app no necesita ser open source.

Ahora bien, si activás --enable-gpl para acceder a x264, x265, vid.stab o xvidcore, toda tu app pasa a estar bajo GPL v3.0. En la práctica, eso implica que deberías publicar el código fuente de tu aplicación completa. Para apps comerciales en Google Play o App Store, esto es un problema serio que la mayoría de los desarrolladores no dimensiona hasta que es tarde. Si te interesa, podés leer más sobre estrategias de segmentación en la infraestructura.

El elefante en la habitación sigue siendo Via-LA (ex MPEG LA). Los codecs H.264 y H.265 tienen patentes activas, y el hecho de que FFmpeg los implemente no te exime de la obligación de licenciamiento si distribuís software que los usa. Taner Sener mencionó esto explícitamente como una de las razones del cierre. Los forks comunitarios asumen ese riesgo — vos también si los usás.

Errores comunes

Usar full-gpl sin entender las implicaciones de licencia

Es el paquete más tentador porque trae todo. Pero si tu app es propietaria y la distribuís en un store, estás técnicamente violando la GPL v3.0. La corrección: usá la variante full (LGPL) a menos que genuinamente necesites x264/x265 y estés dispuesto a publicar tu código fuente.

Seguir dependiendo del paquete ffmpeg_kit_flutter original en pub.dev

El paquete original no recibe actualizaciones desde 2025. No soporta Flutter 3.x correctamente, no tiene los bindings Android V2, y eventualmente va a romper con nuevas versiones del SDK. Si todavía lo tenés en tu pubspec.yaml, migrá a ffmpeg_kit_flutter_new cuanto antes. La API es compatible, el cambio es relativamente indoloro.

No evaluar alternativas sin FFmpeg para casos simples

Si tu app solo necesita recortar un video o extraer un thumbnail, estás arrastrando 20+ MB de librerías nativas que no necesitás. easy_video_editor hace eso mismo usando APIs del sistema operativo, sin dependencias externas y sin riesgo de patentes. Antes de meter FFmpeg, preguntate si realmente lo necesitás.

Preguntas Frecuentes

¿Qué pasó con FFmpegKit y por qué dejó de mantenerse?

Taner Sener lo retiró el 6 de enero de 2025 por falta de tiempo (no lo mantenía activamente desde 2022) y por el riesgo legal que implicó la adquisición de MPEG LA por Via-LA en 2023, que generó incertidumbre sobre las patentes de codecs. El repositorio original fue archivado en junio de 2025.

¿Cómo migrar de ffmpeg_kit_flutter al fork nuevo?

Reemplazá ffmpeg_kit_flutter por ffmpeg_kit_flutter_new en tu pubspec.yaml y corré flutter pub get. La API es compatible, así que en la mayoría de los casos no necesitás cambiar código Dart. Revisá que tu Android minSdk sea 24+ y que Kotlin esté en 1.8.22 o superior.

¿Puedo usar ffmpeg_kit_flutter_new en una app comercial?

Con la variante LGPL (sin --enable-gpl), sí. No necesitás publicar el código fuente de tu app. Eso sí, el riesgo de patentes de Via-LA sobre codecs como H.264 y H.265 sigue existiendo independientemente de la licencia del wrapper. Evaluá si tu caso requiere consulta legal.

¿Cuál es la mejor alternativa si no quiero usar FFmpeg?

easy_video_editor para operaciones básicas (recorte, merge, velocidad) usando APIs nativas. Si necesitás reproducción avanzada, media_kit. Para proyectos enterprise con presupuesto, los SDKs comerciales de IMG.LY o BytePlus eliminan la complejidad de compilación y licencias.

Conclusión

La muerte de FFmpegKit dejó un hueco real en el ecosistema Flutter. El fork ffmpeg_kit_flutter_new lo llena de forma competente: trae las actualizaciones que faltaban, resuelve el problema de los builds personalizados, y mantiene compatibilidad con la API original. La migración es directa.

Dicho esto, no es una solución libre de riesgos. Las patentes de Via-LA siguen ahí, la licencia GPL puede complicarte si no la entendés, y dependés de un mantenedor comunitario que podría encontrarse mañana en la misma situación que Sener. Si tu app es simple, evaluá si realmente necesitás FFmpeg o si una alternativa nativa te alcanza. Si lo necesitás, el fork de sk3llo es hoy la mejor opción disponible — pero andá con los ojos abiertos.

Fuentes

Categorizado en: