ffmpeg_kit_flutter_new_min 3.5.3 copy "ffmpeg_kit_flutter_new_min: ^3.5.3" to clipboard
ffmpeg_kit_flutter_new_min: ^3.5.3 copied to clipboard

FFmpeg Kit Minimal for Flutter. Supports Android, iOS, macOS and Windows platforms.

๐ŸŽฌ FFmpegKit for Flutter โ€” Minimal #

Run FFmpeg & FFprobe on Android, iOS, macOS and Windows from a single Dart API.

A maintained fork of the original FFmpegKit, updated for the Android V2 embedding and Flutter 3+.

pub version FFmpeg 8.1.2 Discord Buy Me A Coffee


โœจ Features #

  • ๐Ÿงฐ Full toolkit โ€” both FFmpeg and FFprobe, with per-session logs, statistics and callbacks.
  • ๐Ÿ“ฑ Four platforms โ€” Android, iOS, macOS, and Windows (x86_64) behind one API.
  • ๐ŸŽž๏ธ FFmpeg v8.1.2 โ€” full command-line-compatible build.
  • ๐Ÿ—‚๏ธ Android SAF โ€” process Storage Access Framework URIs directly.
  • ๐Ÿ“š External libraries โ€” see the enabled-libraries table below.
  • ๐Ÿ”„ Modernised bindings for the latest Flutter and Android/macOS toolchains.
  • ๐Ÿ“ฆ Swift Package Manager โ€” iOS & macOS integrate via SPM (Flutter 3.24+) or CocoaPods, with prebuilt checksum-pinned XCFrameworks.

๐Ÿ“ฆ Install #

dependencies:
  ffmpeg_kit_flutter_new_min: ^3.5.0
import 'package:ffmpeg_kit_flutter_new_min/ffmpeg_kit.dart';

๐ŸŽฏ Choose your package #

There are eight ffmpeg-kit packages โ€” pick the smallest one that covers the codecs and features you need. GPL-licensed codecs (x264, x265, xvidcore, vid.stab) are only in the -gpl packages.

Package Best for
_min (this one) Smallest build โ€” core FFmpeg only
_min_gpl Minimal + GPL codecs (x264/x265/xvid/vid.stab)
_https Adds TLS (gnutls) for https:// inputs
_https_gpl HTTPS + GPL codecs
_audio Audio-focused (mp3, opus, vorbis, speex, โ€ฆ)
_video Video-focused (dav1d, vpx, theora, webp, โ€ฆ)
_full Everything except GPL codecs
ffmpeg_kit_flutter_new Full + GPL โ€” every library

๐Ÿš€ Quick start #

import 'package:ffmpeg_kit_flutter_new_min/ffmpeg_kit.dart';

final session = await FFmpegKit.execute('-i input.mp4 -c:v mpeg4 output.mp4');
final returnCode = await session.getReturnCode();

if (ReturnCode.isSuccess(returnCode)) {
  // โœ… done
} else if (ReturnCode.isCancel(returnCode)) {
  // โน๏ธ cancelled
} else {
  // โŒ error โ€” inspect await session.getLogs()
}

๐Ÿงฉ Enabled libraries #

Below is which system and external libraries each package enables. Some parts of FFmpeg are GPL-licensed and are only present in the GPL packages.

min min-gpl https https-gpl audio video full full-gpl
external libraries - vid.stab
x264
x265
xvidcore
gmp
gnutls
gmp
gnutls
vid.stab
x264
x265
xvidcore
lame
libilbc
libvorbis
opencore-amr
opus
shine
soxr
speex
twolame
vo-amrwbenc
dav1d
fontconfig
freetype
fribidi
kvazaar
libass
libiconv
libtheora
libvpx
libwebp
snappy
zimg
dav1d
fontconfig
freetype
fribidi
gmp
gnutls
kvazaar
lame
libass
libiconv
libilbc
libtheora
libvorbis
libvpx
libwebp
libxml2
opencore-amr
opus
shine
snappy
soxr
speex
twolame
vo-amrwbenc
zimg
dav1d
fontconfig
freetype
fribidi
gmp
gnutls
kvazaar
lame
libass
libiconv
libilbc
libtheora
libvorbis
libvpx
libwebp
libxml2
opencore-amr
opus
shine
snappy
soxr
speex
twolame
vid.stab
vo-amrwbenc
x264
x265
xvidcore
zimg
android system libraries zlib
MediaCodec
ios system libraries bzip2
AudioToolbox
AVFoundation
iconv
zlib
ios VideoToolbox VideoToolbox VideoToolbox - - - - VideoToolbox VideoToolbox
macos system libraries bzip2
AudioToolbox
AVFoundation
Core Image
iconv
OpenCL
OpenGL
VideoToolbox
zlib

๐Ÿ“ฑ Platform support #

Android
API Level
Kotlin
Min Version
iOS
Min Target
macOS
Min Target
Windows
24 1.8.22 14.0 10.15 10+ (x86_64)

Architectures โ€” Android: arm-v7a, arm-v7a-neon, arm64-v8a, x86, x86_64 ยท iOS: arm64 (device) + arm64/x86_64 (simulator, incl. Apple Silicon / Xcode 26), shipped as .xcframework ยท macOS: arm64, x86_64.

Windows: prebuilt FFmpeg 8.1.2 libraries (x86_64) are downloaded automatically at build time. For local development against a self-built bundle, set FFMPEGKIT_LOCAL_DIR (env or CMake cache variable) to the bundle directory before flutter run/build windows.

๐Ÿ“– Usage #

Execute a command & read the result
import 'package:ffmpeg_kit_flutter_new_min/ffmpeg_kit.dart';

FFmpegKit.execute('-i file1.mp4 -c:v mpeg4 file2.mp4').then((session) async {
  final returnCode = await session.getReturnCode();
  if (ReturnCode.isSuccess(returnCode)) {
    // SUCCESS
  } else if (ReturnCode.isCancel(returnCode)) {
    // CANCEL
  } else {
    // ERROR
  }
});
Inspect a session
FFmpegKit.execute('-i file1.mp4 -c:v mpeg4 file2.mp4').then((session) async {
  final sessionId = session.getSessionId();
  final command = session.getCommand();
  final state = await session.getState();
  final returnCode = await session.getReturnCode();
  final duration = await session.getDuration();
  final output = await session.getOutput();
  final logs = await session.getLogs();
  final statistics = await (session as FFmpegSession).getStatistics();
});
Async execution with callbacks
FFmpegKit.executeAsync('-i file1.mp4 -c:v mpeg4 file2.mp4', (Session session) async {
  // CALLED WHEN SESSION IS EXECUTED
}, (Log log) {
  // CALLED WHEN SESSION PRINTS LOGS
}, (Statistics statistics) {
  // CALLED WHEN SESSION GENERATES STATISTICS
});
FFprobe & media information
FFprobeKit.getMediaInformation('<file path or url>').then((session) async {
  final information = await session.getMediaInformation();
});
Cancel sessions
FFmpegKit.cancel();          // stop all sessions
FFmpegKit.cancel(sessionId); // stop a specific session
Android โ€” Storage Access Framework (SAF)
// Reading a file
FFmpegKitConfig.selectDocumentForRead('*/*').then((uri) {
  FFmpegKitConfig.getSafParameterForRead(uri!).then((safUrl) {
    FFmpegKit.executeAsync("-i ${safUrl!} -c:v mpeg4 file2.mp4");
  });
});

// Writing to a file
FFmpegKitConfig.selectDocumentForWrite('video.mp4', 'video/*').then((uri) {
  FFmpegKitConfig.getSafParameterForWrite(uri!).then((safUrl) {
    FFmpegKit.executeAsync("-i file1.mp4 -c:v mpeg4 ${safUrl}");
  });
});
Global callbacks & fonts
FFmpegKitConfig.enableLogCallback((log) { final message = log.getMessage(); });
FFmpegKitConfig.enableStatisticsCallback((statistics) { final size = statistics.getSize(); });
FFmpegKitConfig.setFontDirectoryList(["/system/fonts", "/System/Library/Fonts", "<folder with fonts>"]);

๐Ÿ“„ License #

Licensed under LGPL 3.0. This package contains no GPL-licensed components โ€” if you need x264/x265/xvidcore/vid.stab, use the matching -gpl package.

๐Ÿ’ฌ Community & support #

12
likes
150
points
13k
downloads

Documentation

API reference

Publisher

verified publisherantonkarpenko.com

Weekly Downloads

FFmpeg Kit Minimal for Flutter. Supports Android, iOS, macOS and Windows platforms.

License

LGPL-3.0 (license)

Dependencies

ffmpeg_kit_flutter_platform_interface, flutter

More

Packages that depend on ffmpeg_kit_flutter_new_min

Packages that implement ffmpeg_kit_flutter_new_min