FFmpegKit is a collection of tools to use FFmpeg in Android, iOS, 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.
1. Features
Scripts to build FFmpeg native libraries
FFmpegKit wrapper library to run FFmpeg/FFprobe commands in applications
Supports native platforms: Android, iOS, macOS and tvOS
Supports hybrid platforms: Flutter, React Native
Based on FFmpeg v4.5-dev with optional system and external libraries
Licensed under LGPL 3.0, or GPL v3.0 if GPL licensed libraries are enabled
2. Android
See Android to learn more about FFmpegKit for Android.
3. iOS, macOS, tvOS
See Apple to use FFmpegKit on Apple platforms (iOS, macOS, tvOS).
4. Flutter
See Flutter to learn more about FFmpegKit for Flutter.
5. React Native
See React Native to learn more about FFmpegKit for React Native.
6. Build Scripts
Use android.sh, ios.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.
7. FFmpegKit Library
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, Flutterlibrary comes with a Dart API and React Native library provides a JavaScript API, which are
identical in terms of features and capabilities.
8. Packages
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
VideoToolbox is not available on LTS releases of iOS and tvOS
zimg is supported since v4.5.1
9. Versions
FFmpegKit binaries generated use the same major and minor version numbers as the upstream FFmpeg project.
The exact version number of FFmpeg is obtained using git describe --tags. dev part in the version string
indicates that FFmpeg source code is cloned from the FFmpegmaster branch.
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.
A more detailed documentation is available under Wiki.
12. Test Applications
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.
13. License
FFmpegKit is licensed under the LGPL v3.0. However, if source code is built using the optional --enable-gpl flag
or prebuilt binaries with -gpl postfix are used, then FFmpegKit is subject to the GPL v3.0 license.
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.
15. Contributing
Feel free to submit issues or pull requests.
Please note that main includes only the latest released source code. Changes planned for the next release are
developed under the development branches (development for native platforms, development-react-native for
react-native, development-flutter for flutter). Therefore, if you want to create a pull request, please open it
against them.
请发表评论