ffmpeg_kit_extended_flutter 0.5.12 copy "ffmpeg_kit_extended_flutter: ^0.5.12" to clipboard
ffmpeg_kit_extended_flutter: ^0.5.12 copied to clipboard

A comprehensive Flutter plugin for executing FFmpeg, FFprobe, and FFplay commands using FFmpeg 8.1.2 API. Supports Android, iOS, macOS, Linux, and Windows.

FFmpegKit Extended for Flutter #

FFmpegKit Extended Banner

Stars Forks Issues Downloads Pub version Pub likes Pub points License

Translations #

ffmpeg-kit-extended is a comprehensive Flutter plugin for executing FFmpeg, FFprobe, and FFplay 8.1.2 API commands on Android, iOS, macOS, Linux, and Windows. It leverages Dart FFI to interact directly with native FFmpeg libraries, providing high performance, flexibility, and complete video playback capabilities.

If you like the project and are using it in your app give it a ⭐ on ffmpeg-kit-builders and ffmpeg-kit-extended, and a 👍 on pub.dev. It helps a lot 🙏! Happy coding 🚀!

1. Features #

  • Cross-Platform Support: Works on Android, iOS, macOS, Linux, and Windows.
    • Android: Full video playback support with native surface rendering.
      • x86: x86 architecture is not supported due to its legacy status.
    • iOS & macOS: High-performance video playback with CVPixelBuffer and Metal integration.
      • iOS: Supports both physical devices and simulators. x86_64 architecture is not supported due to its legacy status.
    • Linux: Full video playback support with OpenGL integration.
      • arm64: arm64 architecture currently not supported, coming soon!
  • FFmpeg, FFprobe & FFplay: Latest 8.1.2 API support for media manipulation, information retrieval, and audio/video playback.
  • Video Playback: Complete cross-platform video playback with unified surface API.
  • Real-time Streaming: Position and video dimension streams for live playback monitoring.
  • Dart FFI: Direct native bindings for optimal performance.
  • Asynchronous Execution: Run long-running tasks without blocking the UI thread.
  • Parallel Execution: Run multiple tasks in parallel.
  • Callback Support: detailed hooks for logs, statistics, and session completion.
  • Session Management: Full control over execution lifecycle (start, cancel, list).
  • Extensible: Designed to allow custom native library loading and configuration.
  • Full package Introspection API: Get detailed information about the package, including version, build date, and available muxers, demuxers, encoders, decoders, filters, etc.
  • Deploy Custom Builds: You can deploy custom builds of ffmpeg-kit-extended. See: https://github.com/akashskypatel/ffmpeg-kit-builders

Platform Support #

Platform Status Video Playback Architecture Minimum Requirements
Android (and Android TV) ✅ Supported ✅ Native armv7, arm64, x86_64 API 26+
iOS (and Simulator) ✅ Supported ✅ Texture arm64 iOS 13+
macOS ✅ Supported ✅ Texture arm64, x86_64 macOS 13+
Linux ✅ Supported ✅ Texture x86_64 glibc 2.28+
Windows ✅ Supported ✅ Texture x86_64 Windows 8+

You will have to update your app's minimum requirements on your own to match the requirements above.

🎬 Demo #

2. Installation #

  1. Install the package:

    flutter pub add ffmpeg_kit_extended_flutter
    
  2. Add the ffmpeg_kit_extended_config section to your pubspec.yaml:

    ffmpeg_kit_extended_config:
      type: "base" # pre-bundled builds: debug, base, full, audio, video, video_hw
      gpl: true # enable to include GPL libraries. WARNING: Make sure you understand what GPL license means before enabling. Check https://www.ffmpeg.org/legal.html for more information.
      small: true # enable to use smaller builds
      # == OR ==
      # -------------------------------------------------------------
      # You can specify remote or local path to libffmpegkit libraries for each platform
      # This allows you to deploy custom builds of libffmpegkit.
      # See: https://github.com/akashskypatel/ffmpeg-kit-builders
      # Example:
      # windows: "path/to/ffmpeg-kit/libraries"
      # ios: "https://path/to/bundle.xcframework.zip"
    

    Note: Native libraries are now automatically downloaded and bundled during the build process using Dart Hooks. No manual configuration script is required.

Important: If you change the bundle after you have already created a build with another bundle, you must flutter clean and flutter build to re-run the build hook and download updated binaries for the new bundle selection.

  1. Import the package in your Dart code:

    import 'package:ffmpeg_kit_extended_flutter/ffmpeg_kit_extended_flutter.dart';
    
  2. Initialize the plugin at application startup before calling any API:

    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await FFmpegKitExtended.initialize();
      runApp(MyApp());
    }
    

    Important: Any FFmpeg, FFprobe, or FFplay API call made before initialize() completes will throw a StateError.

2.1 Platform specific configuration #

  1. iOS and iOS Simulator - Your app's Podfile will need to be updated to add post-install hooks to exclude building for architectures that aren't supported Add the following to your Podfile:

    post_install do |installer|
      installer.pods_project.targets.each do |target|
        flutter_additional_ios_build_settings(target)
        target.build_configurations.each do |config|
          config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'i386 x86_64'
          config.build_settings['EXCLUDED_ARCHS[sdk=iphoneos*]'] = 'i386 x86_64'
        end
      end
    
      installer.generated_projects.each do |project|
        project.targets.each do |target|
          target.build_configurations.each do |config|
            config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'i386 x86_64'
            config.build_settings['EXCLUDED_ARCHS[sdk=iphoneos*]'] = 'i386 x86_64'
            config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES'
          end
        end
        project.save
      end
    end
    

2.2 Pre-bundled Builds #

2.2 Feature Matrix #

Feature Base Audio Video Video+Hardware Full
Video x x x
Audio x x x x
Streaming x x x x
Hardware x x
AI*
HTTPS * x x x x
Platform* x x x x x
Other* x
  1. AI features are not supported on all platforms. You must deploy your own custom build of ffmpeg-kit-extended to enable certain AI features.

  2. Platform features are built-in platform libraries that FFmpeg support like AVFounation, VideoToolbox, etc. on apple platforms or DirectX, MediaFoundation on Windows.

  3. HTTPS features are enabled by default for Platforms that have built-in HTTPS support like Windows or Apple. For Linux and Android OpenSSL is enabled by default.

  4. Other features are additional features that are not covered by the above categories. See Supported External Libraries for more information.

  5. To deploy a custom build see ffmpeg-kit-builders.

3. Usage #

3.1 Basic Command Execution #

Execute an FFmpeg command asynchronously:

import 'package:ffmpeg_kit_extended_flutter/ffmpeg_kit_extended_flutter.dart';

FFmpegKit.executeAsync('-i input.mp4 -c:v libx264 output.mp4', onComplete: (session) async {
  final returnCode = session.getReturnCode();

  if (ReturnCode.isSuccess(returnCode)) {
    print("Command success");
  } else if (ReturnCode.isCancel(returnCode)) {
    print("Command cancelled");
  } else {
    print("Command failed with state ${session.getState()}");
    final failStackTrace = session.getFailStackTrace();
    print("Stack trace: $failStackTrace");
  }
});

3.2 Retrieving Media Information #

Use FFprobeKit to get detailed metadata about a media file:

import 'package:ffmpeg_kit_extended_flutter/ffmpeg_kit_extended_flutter.dart';

FFprobeKit.getMediaInformationAsync('path/to/video.mp4', onComplete: (session) {
  final info = session.getMediaInformation();
  if (info != null) {
      print("Duration: ${info.duration}");
      print("Format: ${info.format}");
      for (var stream in info.streams) {
          print("Stream type: ${stream.type}, codec: ${stream.codec}");
      }
  }
});

3.3 Handling Logs and Statistics #

You can register logs and statistics callbacks for improved monitoring:

FFmpegKit.executeAsync(
  '-i input.mp4 output.mkv',
  onComplete: (session) { /* Complete Callback */ },
  onLog: (log) {
    print("Log: ${log.message}");
  },
  onStatistics: (statistics) {
    print("Progress: ${statistics.time} ms, size: ${statistics.size}");
  },
);

3.4 Session Management #

All executions return a Session object which can be used to control the task:

// Cancel a specific session
FFmpegKit.cancel(session);

// Cancel all active sessions
FFmpegKitExtended.cancelAllSessions();

// List all sessions
final sessions = FFmpegKitExtended.getSessions();
// OR list only FFmpeg sessions
final ffmpegSessions = FFmpegKit.getFFmpegSessions();

3.5 FFplay Video Playback #

The plugin supports complete video playback with a unified cross-platform surface API.

Basic Video Playback

import 'package:ffmpeg_kit_extended_flutter/ffmpeg_kit_extended_flutter.dart';

class VideoPlayerWidget extends StatefulWidget {
  @override
  _VideoPlayerWidgetState createState() => _VideoPlayerWidgetState();
}

class _VideoPlayerWidgetState extends State<VideoPlayerWidget> {
  FFplaySurface? _surface;
  bool _hasVideo = false;
  int _videoWidth = 0;
  int _videoHeight = 0;
  double _playbackPosition = 0.0;

  @override
  void dispose() {
    _surface?.release();
    super.dispose();
  }

  Future<void> _startPlayback(String filePath) async {
    // Create surface before starting playback
    _surface = await FFplaySurface.create();

    final session = await FFplayKit.executeAsync('-i "$filePath"');

    // Listen for video dimensions
    session.videoSizeStream.listen((size) {
      final (width, height) = size;
      if (mounted && width > 0 && height > 0) {
        setState(() {
          _videoWidth = width;
          _videoHeight = height;
          _hasVideo = true;
        });
      }
    });

    // Listen for position updates
    session.positionStream.listen((position) {
      if (mounted) {
        setState(() => _playbackPosition = position);
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        // Video display (only when video frames are available)
        if (_hasVideo && _surface != null)
          SizedBox(
            width: _videoWidth.toDouble(),
            height: _videoHeight.toDouble(),
            child: _surface!.toWidget(),
          ),

        // Playback controls
        Row(
          children: [
            IconButton(
              onPressed: () => FFplayKit.pause(),
              icon: Icon(Icons.pause),
            ),
            IconButton(
              onPressed: () => FFplayKit.resume(),
              icon: Icon(Icons.play_arrow),
            ),
            Expanded(
              child: Slider(
                value: _playbackPosition / (FFplayKit.duration > 0 ? FFplayKit.duration : 1.0),
                onChanged: (value) => FFplayKit.seek(value * FFplayKit.duration),
              ),
            ),
          ],
        ),
      ],
    );
  }
}

Platform-Specific Usage

The FFplaySurface class automatically handles platform differences:

  • Android: Uses SurfaceTexture backed ANativeWindow for native rendering
  • iOS/macOS: Uses CVPixelBuffer textures with Metal optimization
  • Linux/Windows: Uses pixel buffer textures with frame callbacks
  • Audio-only: Surface is created but not displayed, preventing crashes

Advanced Features

// Get session-specific properties
final session = await FFplayKit.executeAsync('-i video.mp4');

// Video dimensions (available when first frame is decoded)
final width = session.getVideoWidth();
final height = session.getVideoHeight();

// Real-time streams
session.positionStream.listen((pos) => print('Position: ${pos}s'));
session.videoSizeStream.listen((size) => print('Size: ${size}'));

// Volume control
session.setVolume(0.8); // 0.0 to 1.0
print('Volume: ${session.getVolume()}');

// Session state
print('Playing: ${session.isPlaying()}');
print('Paused: ${session.isPaused()}');

4. Supported External Libraries
#

GPL licensing

  • Libraries marked 10 Enabling any GPL library makes the resulting FFmpeg binary GPL-licensed and non-redistributable under a permissive license.
    • Audio+: libbs2b, libcdio, librubberband, libjack (Linux)
    • Video+: libx264, libx265, libdavs2, libdvdnav, libdvdread, libxavs, libxavs2, libxvid (Linux), frei0r, libvidstab
    • Video+HW+: v4l2-m2m (Linux)
    • Video+ (Desktop only): avisynth

AI

  • libopenvino and libtensorflow are only available on Desktop builds (MacOS, Linux, and Windows).
  • libtorch is only available on Linux and MacOs builds (Windows not supported due ABI mismatch).
Bundle Key Description
b+ Base bundle and above.
a+ Audio bundle and above.
v+ Video bundle and above.
h+ Video+Hardware bundle and above.
f Full bundle only.
(empty) not available on this platform.
Library Android Linux Windows iOS macOS
System
bzlib, iconv, lzma, zlib a+ a+ a+ a+ a+
TLS / HTTPS
openssl b+ b+
schannel b+
securetransport b+ b+
Streaming
libsrt, librist, librtmp a+ a+ a+ a+ a+
Audio Codecs
libcodec2, libgsm, libilbc, liblc3, libmodplug a+ a+ a+ a+ a+
libmp3lame, libopencore-amrnb, libopencore-amrwb a+ a+ a+ a+ a+
libopenmpt, libopus, libsoxr, libspeex, libtwolame a+ a+ a+ a+ a+
libvo-amrwbenc, libvorbis, openal a+ a+ a+ a+ a+
alsa a+
libbs2b10 a+ a+ a+ a+ a+
libmpeghdec a+ a+ a+ a+ a+
Audio Extras (not in small builds)
chromaprint, libflite, libgme, libmysofa, libshine, lv2 a+ a+ a+ a+ a+
libcdio, librubberband10 a+ a+ a+ a+ a+
ladspa, libpulse, sndio a+
libjack10 a+
Video Libraries
lcms2, libaom, libaribcaption v+ v+ v+ v+ v+
libass, libbluray, libcaca, libdav1d v+ v+ v+ v+ v+
libdav1d, libfontconfig, libfreetype, libfribidi v+ v+ v+ v+ v+
libharfbuzz, libjxl, libkvazaar, liblcevc-dec v+ v+ v+ v+ v+
liboapv, libopenh264, libopenjpeg, librav1e v+ v+ v+ v+ v+
librsvg, libsnappy, libsvtav1, libtheora v+ v+ v+ v+ v+
libuavs3d, libvpx, libvvenc, libwebp v+ v+ v+ v+ v+
libxevd, libxeve, libzimg, libzvbi, libxml2, sdl2 v+ v+ v+ v+ v+
libdavs2, libdvdnav, libdvdread, libx26410 v+ v+ v+ v+ v+
libx265, libxavs, libxavs2, libaribb2410 v+ v+ v+ v+ v+
libdc1394, libiec61883, libsvtjpegxs v+
libxvid10 v+
libopencolorio15 v+ v+ v+ v+ v+
Video Extras (not in small builds)
libklvanc, liblensfun, libqrencode, libvmaf, vapoursynth v+ v+ v+ v+ v+
frei0r, libvidstab10 v+ v+ v+ v+ v+
libv4l2, libxcb, libxcb-shape, libxcb-shm, libxcb-xfixes, xlib v+
avisynth10 v+ v+ v+
Hardware Acceleration
amf, libglslang, libmfx, libplacebo, libshaderc, libvpl h+ h+ h+ h+ h+
opencl, opengl, vulkan, vulkan-static h+ h+ h+ h+ h+
libdrm, vaapi, rkmpp, vdpau h+
v4l2-m2m10 h+
AI (Full bundle only)
pocketsphinx, whisper f f f f f
libopencv, libquirc, libtesseract11 f f f f f
libopenvino, libtensorflow11 f f f
libtorch11 f f
Platform-specific (All bundles)
jni, mediacodec b+
appkit, avfoundation, audiotoolbox, coreimage, metal, securetransport b+ b+
videotoolbox, schannel, dxva2, d3d12va, d3d11va, mediafoundation b+ b+
appkit b+
schannel, dxva2, d3d12va, d3d11va, mediafoundation b+
alsa b+
Library Description Platform1 Extra2 Base Audio Video Video+Hardware Full
jni8 Enables Java Native Interface interactions on Android Android x x x x x
appkit8 Accesses AppKit for screen and window capture Apple x 9 9 9 9
avfoundation8 Captures input from AVFoundation devices (cameras/mics) Apple x 9 9 9 9
pocketsphinx Performs offline speech-to-text conversion x
whisper Integrates OpenAI Whisper for speech recognition x
audiotoolbox8 Accesses AudioToolbox for native codec support Apple x 9 9 9 9
alsa Accesses ALSA for audio input and output Linux x x x x x
chromaprint Calculates audio fingerprints for identification x x x x x
ladspa Loads LADSPA plugins for audio filtering Linux x x x x x
libbs2b Simulates binaural audio via DSP 10 10 10 10
libcdio Reads and extracts audio from CDs 10 10 10 10 10
libcelt13 Decodes CELT audio streams
libcodec2 Encodes and decodes Codec2 speech format x x x x
libfdk-aac Encodes and decodes high-quality AAC audio 9 9 9 9
libflite Synthesizes speech from text (TTS) filter x x x x x
libgme Emulates and plays video game music formats x x x x x
libgsm Encodes and decodes GSM audio x x x x
libilbc Encodes and decodes iLBC audio x x x x
libjack8 Connects to the JACK audio connection kit Linux 10 10 10 10 10
liblc3 Encodes and decodes LC3 (Bluetooth LE) audio x x x x
libmodplug Decodes module music formats (MOD, etc.) x x x x
libmp3lame Encodes MP3 audio x x x x
libmysofa Reads HRTF files for the sofalizer filter x x x x x
libopencore-amrnb Encodes and decodes AMR-NB audio x x x x
libopencore-amrwb Decodes AMR-WB audio x x x x
libopenmpt Decodes tracked music files (OpenMPT based) x x x x
libopus Encodes and decodes Opus audio x x x x
libpulse8 Captures audio via PulseAudio server Linux x x x x x
librubberband Performs high-quality time stretching/pitch shifting 10 10 10 10 10
libshine Encodes MP3 using fixed-point math x x x x x
libsoxr Resamples audio using the SoX library x x x x
libspeex Encodes and decodes Speex audio x x x x
libtwolame Encodes MP2 audio x x x x
libvo-amrwbenc Encodes AMR-WB audio x x x x
libvorbis Encodes and decodes Vorbis audio x x x x
lv2 Loads LV2 plugins for audio filtering x x x x x
openal Captures audio via OpenAL 1.1 x x x x
sndio Accesses sndio for audio I/O on OpenBSD Linux x x x x x
gcrypt Provides crypto functions for RTMP/RTMPE 3
gmp Provides math functions for crypto contexts 3
bzlib Compresses and decompresses bzip2 streams x x x x
iconv Converts character encodings for text/subtitles x x x x
libxml2 Parses XML for DASH, IMF, and other formats x x x
lzma Provides LZMA lossless data compression x x x x
zlib Provides Deflate/zlib lossless data compression x x x x
amf Accesses AMD Advanced Media Framework (GPU encoding) x x
mediacodec8 Accesses Android MediaCodec hardware acceleration Android x x x
coreimage8 Applies video filters via Apple CoreImage Apple x 9 9
metal8 Utilizes Apple Metal for GPU acceleration Apple x 9 9
videotoolbox8 Accesses VideoToolbox for hardware encoding/decoding Apple x 9 9
cuda-llvm8 Compiles CUDA kernels at runtime using Clang Nvidia 12 12
cuda-nvcc8 Compiles CUDA kernels using NVCC Nvidia 12 12
cuvid8 Accesses Nvidia CUVID for decoding (Legacy) Nvidia 12 12
ffnvcodec Provides headers for Nvidia codec API integration Nvidia 12 12
libdrm Accesses Direct Rendering Manager for Linux GPU buffer Linux x x
libglslang14 Compiles GLSL shaders to SPIR-V for Vulkan filters x x
libmfx14 Accesses Intel Quick Sync Video (QSV) via MediaSDK x x
libnpp13 Uses Nvidia Performance Primitives for image processing Nvidia
libplacebo Applies high-quality GPU video processing filters x x
libshaderc14 Compiles GLSL shaders to SPIR-V (Google implementation) x x
libvpl14 Accesses Intel oneVPL video processing library x x
nvdec8 Accesses Nvidia NVDEC for hardware decoding Nvidia 12 12
nvenc8 Accesses Nvidia NVENC for hardware encoding Nvidia 12 12
opencl Enables OpenCL-based video filtering x x
rkmpp Accesses Rockchip Media Process Platform for HW codecs Linux x x
v4l2-m2m Accesses V4L2 Memory-to-Memory hardware codecs Linux 10 10
vaapi Accesses Video Acceleration API for HW codecs Linux x x
vdpau8 Accesses VDPAU for hardware decoding on Unix Linux+Nvidia x x
vulkan Enables Vulkan-based filtering and rendering x x
vulkan-static Links libvulkan statically x x
opengl Enables OpenGL-based rendering and filtering x x
d3d11va8 Accesses Direct3D 11 for video acceleration Windows x 9 9
d3d12va8 Accesses Direct3D 12 for video acceleration Windows x 9 9
dxva28 Accesses DirectX 9 for video acceleration Windows x 9 9
mediafoundation8 Accesses Windows Media Foundation for encoding Windows x 9 9
ohcodec8 Accesses OpenHarmony multimedia codec capabilities HarmonyOS 9 9
mmal Accesses Broadcom MMAL for Raspberry Pi multimedia Raspberry Pi 9 9
omx Accesses OpenMAX IL for hardware acceleration Raspberry Pi 9 9
omx-rpi Accesses OpenMAX IL implementation for Raspberry Pi Raspberry Pi 9 9
securetransport8 Provides TLS/SSL support via Apple Secure Transport Apple x 4 4 4 4
gnutls Provides TLS/SSL support via GnuTLS 4 4 4 4
libtls Provides TLS/SSL support via LibreSSL 4 4 4 4
mbedtls Provides TLS/SSL support via mbedTLS 4 4 4 4
openssl Provides TLS/SSL support via OpenSSL 4 4 4 4
schannel8 Provides TLS/SSL support via Windows SChannel Windows x 4 4 4 4
librabbitmq Enables AMQP protocol support (RabbitMQ) 5
libzmq Enables ZeroMQ message passing protocol 5
libsmbclient Enables SMB/CIFS protocol support 6 & 10
libssh Enables SFTP protocol support 7
librist Enables Reliable Internet Stream Transport (RIST) x x x x
librtmp Enables RTMP and RTMPE stream support x x x x
libsrt Enables Secure Reliable Transport (SRT) protocol x x x x
libopencv Applies computer vision filters via OpenCV x
libopenvino8 Runs DNN-based filters using Intel OpenVINO backend 11
libtensorflow8 Runs DNN-based filters using TensorFlow backend 11
libtorch8 Runs DNN-based filters using PyTorch backend 11
libquirc Decodes QR codes from video streams x
libtesseract Performs Optical Character Recognition (OCR) x
sdl2 Outputs audio/video to window using SDL2 x x x x
avisynth Reads and demuxes AviSynth script files 10 10 10 10
decklink Captures/Outputs via Blackmagic DeckLink devices 9 9 9
frei0r Loads Frei0r plugins for video filtering 10 10 10 10
lcms2 Applies ICC color profiles using LittleCMS 2 x x x
libaom Encodes and decodes AV1 video x x x
libaribb24 Decodes ARIB STD-B24 captions x x x
libaribcaption Decodes ARIB captions (alternative library) x x x
libass Renders ASS/SSA subtitles x x x
libbluray Reads Blu-ray playlists and protocols x x x
libcaca Renders video as ASCII characters x x x
libdav1d Decodes AV1 video (high performance) x x x
libdavs2 Decodes AVS2 video 10 10 10
libdc1394 Captures video from FireWire cameras Linux x x x
libdvdnav Navigates and demuxes DVD menus/content 10 10 10
libdvdread Reads DVD filesystem structures 10 10 10
libfontconfig Configures and locates fonts for text rendering x x x
libfreetype Renders fonts for text overlays x x x
libfribidi Handles bi-directional text logic x x x
libharfbuzz Shapes complex text for subtitles x x x
libiec61883 Captures DV/HDV via FireWire Linux x x x
libjxl Encodes and decodes JPEG XL images x x x
libklvanc Processes Vertical Ancillary Data (VANC) x x x x
libkvazaar Encodes HEVC video x x x
liblcevc-dec Decodes LCEVC video enhancement layers x x x
liblensfun Corrects lens distortion using Lensfun x x x x
liboapv Encodes OAPV (Open Advanced Photos/Video) x x x
libopenh264 Encodes H.264 video (Cisco implementation) x x x
libopenjpeg Encodes and decodes JPEG 2000 images x x x
libqrencode Generates QR codes as video sources x x x x
librav1e Encodes AV1 video (Rust implementation) x x x
librsvg Renders SVG files for overlays x x x
libsnappy Compresses data for the Hap codec x x x
libsvtav1 Encodes AV1 video (SVT implementation) x x x
libtheora Encodes Theora video x x x
libuavs3d Decodes AVS3 video x x x
libv4l2 Accesses V4L2 devices and utilities Linux x x x x
libvidstab Stabilizes video using motion analysis 10 10 10 10
libvmaf Calculates VMAF video quality scores x x x x
libvpx Encodes and decodes VP8 and VP9 video x x x
libvvenc Encodes H.266/VVC video x x x
libwebp Encodes WebP images x x x
libx264 Encodes H.264/AVC video 10 10 10
libx265 Encodes HEVC/H.265 video 10 10 10
libxavs Encodes AVS video 10 10 10
libxavs2 Encodes AVS2 video 10 10 10
libxcb Captures screen content via XCB Linux x x x x
libxcb-shape Handles X11 shapes during capture Linux x x x x
libxcb-shm Uses shared memory for X11 capture Linux x x x x
libxcb-xfixes Fixes cursor rendering in X11 capture Linux x x x x
libxevd Decodes EVC video x x x
libxeve Encodes EVC video x x x
libxvid Encodes MPEG-4 video (Xvid) Linux 10 10 10
libzimg Performs scaling and color conversion (zscale) x x x
libzvbi Decodes VBI teletext data x x x
vapoursynth Demuxes VapourSynth script frames x x x x
xlib Captures screen content via Xlib Linux x x x x
libsvtjpegxs Encodes JPEG XS video x x x
libopencolorio15 Color space conversion x x x
libmpeghdec Decodes MPEG-H 3D Audio 9 9 9 9

To deploy a custom build see ffmpeg-kit-builders.

1 Platform specific libraries are enabled by default for target platform and bundle.
2 Extra libraries are enabled on non-small bundles.
3 RTMP(T)E support requires either gcrypt or gmp if the requires SSL library is not selected in the bundle.
4 HTTPS feature in FFmpeg supports multiple SSL libraries. By default OpenSSL is selected unless you build a custom bundle with a specific supported library.
5 MQ libraries are not enabled by default in any bundle. A custom build must be deployed to enable them using --enable-mq OR --enable-librabbitmq and --enable-libzmq.
6 SAMBA (SMB protocol) library is not enabled by default in any bundle (except on Windows, which supports SMB by default). A custom build must be deployed to enable them using --enable-smb OR --enable-libsmbclient.
7 SSH library is not enabled by default in any bundle. A custom build must be deployed to enable them using --enable-ssh OR --enable-libssh.
8 These libraries cannot be built statically. If you deploy a static build with these libraries they will not be bundled with FFmpegKit wrapper bundle. The target system will need these libraries installed or running the wrapper may crash immediately.
9 These libraries have restrictive licenses that may make the binaries non-redistributable, are not compatible with GPL and require a custom build and deployment with --enable-nonfree.
10 These libraries are GPL and only included with --enable-gpl.
11 These libraries can either be selected with GPU support or CPU only. Note that some of them do not support AMD ROCm framework. These libraries are not available on Mobile platforms due to platform limitations.
12 while these libraries are not compatible with GPL and have a more restrictive license, they are redistributable and will be bundled with non-gpl ffmpeg-kit bundle.
13 These libraries have been deprecated and will be auto-disabled and repalced by modern library if available.
14 These libraries conflict with other libraries with overlapping functionality. If both conflicting libraries are enabled, the preferred library, indicated by an * will be enabled and the other library will be disabled:

  • libmfx -> libvpl*
  • libglslang -> libshaderc*

15 These libraries are only supported on specific CPU architectures.

  • libsvtjpegxs -> x86_64 only

5. License #

This project is licensed under the LGPL v3.0 by default. However, depending on the underlying FFmpeg build configuration and external libraries used, the effective license may be GPL v3.0. Please review the licenses of the included libraries.

Understand the difference between LGPL and GPL licenses before using this plugin in your project.

Using GPL licensed components in your application may require your application to also be licensed under GPL.

20
likes
160
points
1.41k
downloads

Documentation

Documentation
API reference

Publisher

verified publisherfryingpan.games

Weekly Downloads

A comprehensive Flutter plugin for executing FFmpeg, FFprobe, and FFplay commands using FFmpeg 8.1.2 API. Supports Android, iOS, macOS, Linux, and Windows.

Repository (GitHub)
View/report issues
Contributing

Topics

#ffmpeg #media-processing #transcoding #media-tagging #ffmpeg-kit

License

LGPL-3.0 (license)

Dependencies

code_assets, crypto, ffi, flutter, hooks, logging, meta, path, yaml

More

Packages that depend on ffmpeg_kit_extended_flutter

Packages that implement ffmpeg_kit_extended_flutter