This fork only aims to make ffmpeg-kit compatible with new android versions (API 35) which request all binaries to be rebuilt. Google request developers to build new with new r27 and r28 ndk but ffmpeg-kit has its own NDK compatibility table which supports only upto r25.
Edit: As original devs said, master branch has been tested upto NDK r27. Lucky for us, there is a version of ndk r23 and r25 in CI which supports 16KB page sizes too. make sure to download this ndk version and compile ffmpeg-kit with this ndk only.NDK : R23 R25 You can find all details related to this update here. https://developer.android.com/guide/practices/page-sizes
FFmpegKit has been officially retired. There will be no further ffmpeg-kit releases.
See Saying Goodbye to FFmpegKit @ medium to learn why we made this decision.
All previously released ffmpeg-kit binaries will be removed according to the following schedule.
| FFmpegKit Version | Available Until |
|---|---|
| Less than 6.0 | February 1st, 2025 |
| 6.0 | April 1st, 2025 |
Thank you for your support and interest in this project.
If you're looking for a replacement, please check out the community-maintained forks available through the package managers below.
| Platform |
|---|
| Android |
| Flutter |
| React Native |
FFmpegKit is a collection of tools to use FFmpeg1 in Android, iOS, Linux, macOS, tvOS, Flutter and React Native applications.
It includes scripts to build FFmpeg native libraries, a wrapper library to run FFmpeg/FFprobe commands in
applications and 8 prebuilt binary packages available at Github,
Maven Central, CocoaPods, pub and npm.
- Scripts to build FFmpeg native libraries
FFmpegKitwrapper library to runFFmpeg/FFprobecommands in applications- Supports native platforms: Android, iOS, Linux, macOS and tvOS
- Supports hybrid platforms: Flutter, React Native
- Based on FFmpeg
v4.5-devor later with optional system and external libraries - 8 prebuilt binary packages available at Github, Maven Central, CocoaPods, pub and npm
- Licensed under
LGPL 3.0by default,GPL v3.0if GPL licensed libraries are enabled
See Android to learn more about FFmpegKit for Android.
See Apple to use FFmpegKit on Apple platforms (iOS, macOS, tvOS).
See Flutter to learn more about FFmpegKit for Flutter.
See Linux to learn more about FFmpegKit for Linux.
See React Native to learn more about FFmpegKit for React Native.
Use android.sh, ios.sh, linux.sh, macos.sh and tvos.sh to build FFmpegKit for each native platform.
All scripts support additional options to enable optional libraries and disable platform architectures. See Building wiki page for the details.
FFmpegKit is a wrapper library that allows you to easily run FFmpeg/FFprobe commands in applications. It
provides additional features on top of FFmpeg to enable platform specific resources, control how commands are
executed and how the results are handled.
Android library of FFmpegKit has a Java API, Apple libraries (iOS, macOS, tvOS) have an Objective-C
API, Flutter library comes with a Dart API, Linux library has a C++ API and React Native library provides
a JavaScript API with Typescript definitions, which are identical in terms of features and capabilities.
There are eight different ffmpeg-kit packages distributed on
Github,
Maven Central, CocoaPods, pub and
npm.
Below you can see which system libraries and external libraries are enabled in each one of them.
Please remember that some parts of FFmpeg are licensed under the GPL and only GPL licensed ffmpeg-kit packages
include them.
| 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 VideoToolbox zlib |
|||||||
| macos system libraries | bzip2 AudioToolbox AVFoundation Core Image iconv OpenCL OpenGL VideoToolbox zlib |
|||||||
| tvos system libraries | bzip2 AudioToolbox iconv VideoToolbox zlib |
|||||||
AVFoundationis not available ontvOSVideoToolboxis not available on LTS releases ofiOSandtvOSzimgis supported sincev4.5.1
FFmpegKit binaries generated use the same major and minor version numbers as the upstream FFmpeg project. The
third and last number in the version string, if exists, is specific to FFmpegKit. It shows different releases from
the same FFmpeg release branch.
dev part in the version string indicates that FFmpeg source code is cloned from the FFmpeg master branch and
the exact version number of FFmpeg is obtained using the git describe --tags command.
| Platforms | FFmpegKit Version | FFmpeg Version | Release Date |
|---|---|---|---|
| Flutter | 6.0.3 | 6.0 | Sep 19, 2023 |
| React Native | 6.0.2 | 6.0 | Sep 19, 2023 |
| Flutter | 6.0.2 | 6.0 | Sep 03, 2023 |
| React Native | 6.0.1 | 6.0 | Sep 03, 2023 |
| Flutter | 6.0.1 | 6.0 | Sep 03, 2023 |
| React Native | 6.0.0 | 6.0 | Aug 27, 2023 |
| Flutter | 6.0.0 | 6.0 | Aug 27, 2023 |
| Android Apple |
6.0 | 6.0 | Aug 21, 2023 |
| React Native | 5.1.0 | 5.1.2 | Oct 02, 2022 |
| Flutter | 5.1.0 | 5.1.2 | Oct 02, 2022 |
| Android Apple |
5.1 | 5.1.2 | Sep 29, 2022 |
| React Native | 4.5.2 | 4.5-dev-3393 | May 25, 2022 |
| Flutter | 4.5.1 | 4.5-dev-3393 | Jan 02, 2022 |
| React Native | 4.5.1 | 4.5-dev-3393 | Jan 02, 2022 |
| Android | 4.5.1 | 4.5-dev-3393 | Jan 01, 2022 |
| Apple | 4.5.1 | 4.5-dev-3393 | Dec 30, 2021 |
| Flutter | 4.5.0 | 4.5-dev-2008 | Oct 05, 2021 |
| React Native | 4.5.0 | 4.5-dev-2008 | Oct 01, 2021 |
| Android Apple |
4.5 | 4.5-dev-2008 | Sep 18, 2021 |
| Android Apple |
4.4 | 4.4-dev-3015 | Mar 03, 2021 |
FFmpegKit binaries are published in two release variants: Main Release and LTS Release.
-
Main releases include complete functionality of the library and support the latest SDK/API features.
-
LTS releases are customized to support a wider range of devices. They are built using older API/SDK versions, so some features are not available on them.
This table shows the differences between two variants.
| Main Release | LTS Release | |
|---|---|---|
| Android API Level | 24 | 16 |
| Android Camera Access | Yes | - |
| Android Architectures | arm-v7a-neon arm64-v8a x86 x86-64 |
arm-v7a arm-v7a-neon arm64-v8a x86 x86-64 |
| iOS Min SDK | 12.1 | 10 |
| iOS VideoToolbox | Yes | - |
| iOS AVFoundation | Yes | - |
| iOS Architectures | arm64 arm64-simulator arm64-mac-catalyst x86-64 x86-64-mac-catalyst |
armv7 arm64 i386 x86-64 |
| iOS Bundle Format | XCFrameworks | Frameworks |
| Mac Catalyst Min Version | 14.0 | - |
| macOS Min SDK | 10.15 | 10.12 |
| macOS AVFoundation | Yes | - |
| macOS Architectures | arm64 x86-64 |
x86-64 |
| macOS Bundle Format | XCFrameworks | Frameworks |
| tvOS Min SDK | 11.0 | 10.0 |
| tvOS VideoToolbox | Yes | - |
| tvOS Architectures | arm64 x86-64 arm64-simulator |
arm64 x86-64 |
| tvOS Bundle Format | XCFrameworks | Frameworks |
A more detailed documentation is available under Wiki.
You can see how FFmpegKit is used inside an application by running test applications created under
FFmpegKit Test project.
All applications are identical and supports command execution, video encoding, accessing https urls, encoding audio, burning subtitles, video stabilisation, pipe operations and concurrent command execution.
FFmpegKit library alone is licensed under the LGPL v3.0.
FFmpegKit bundles (.aar archives, frameworks, xcframeworks), which include both FFmpegKit and FFmpeg
libraries, are also licensed under the LGPL v3.0. However, if the source code is built using the optional
--enable-gpl flag or prebuilt binaries with -gpl postfix are used, then FFmpegKit bundles become subject to the
GPL v3.0. Because, FFmpeg is licensed under the GPL v3.0 in those bundles. And that makes the whole bundle
effectively subject to the GPL v3.0.
FFmpegKit build scripts always configure FFmpeg with --enable-version3 option. And never enable non-free
libraries. Thus, FFmpeg libraries created by FFmpegKit are licensed under the LGPL v3.0 by default. Only when
--enable-gpl is provided they become subject to GPL v3.0. That is how prebuilt binaries with -gpl postfix are
compiled.
Refer to Licenses to see the licenses of all libraries.
Trademark lists the trademarks used in the FFmpegKit
documentation.
It is not clearly explained in their documentation, but it is believed that FFmpeg, kvazaar, x264 and x265
include algorithms which are subject to software patents. If you live in a country where software algorithms are
patentable then you'll probably need to pay royalty fees to patent holders. We are not lawyers though, so we recommend
that you seek legal advice first. See FFmpeg Patent Mini-FAQ.
openh264 clearly states that it uses patented algorithms. Therefore, if you build ffmpeg-kit with openh264 and
distribute that library, then you are subject to pay MPEG LA licensing fees. Refer to
OpenH264 FAQ page for the details.
1 FFmpeg is a trademark of Fabrice Bellard. FFmpegKit is an independent project and not affiliated with the FFmpeg trademark holder.
See our CONTRIBUTING guide.