.github | ||
android | ||
apple | ||
docs | ||
scripts | ||
src | ||
tools | ||
.gitignore | ||
android.sh | ||
apple.sh | ||
ios.sh | ||
LICENSE.GPLv3 | ||
LICENSE.LGPLv3 | ||
macos.sh | ||
README.md | ||
tvos.sh |
FFmpegKit
FFmpeg Kit for applications.
1. Features
-
Scripts to build FFmpeg libraries
-
FFmpegKit
wrapper library to runFFmpeg
/FFprobe
commands in applications -
Supports
-
Android, iOS, macOS and tvOS
-
FFmpeg
v4.4-dev
-
29 external libraries
chromaprint
,dav1d
,fontconfig
,freetype
,fribidi
,gmp
,gnutls
,kvazaar
,lame
,libaom
,libass
,libiconv
,libilbc
,libtheora
,libvorbis
,libvpx
,libwebp
,libxml2
,opencore-amr
,openh264
,opus
,sdl
,shine
,snappy
,soxr
,speex
,tesseract
,twolame
,vo-amrwbenc
-
5 external libraries with GPL license
rubberband
,vid.stab
,x264
,x265
,xvidcore
-
-
Parallel command execution
-
-
8 prebuilt binary packages available at Github, Maven Central and CocoaPods.
-
Licensed under
LGPL 3.0
, orGPL 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. Build Scripts
Use android.sh
, ios.sh
, macos.sh
and tvos.sh
to build FFmpegKit
for each platform.
All scripts support additional options to enable libraries and disable platform architectures.
5. 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 has a Java
API and Apple
libraries (iOS
, macOS
, tvOS
) have an Objective-C
API,
which are identical in terms of features and capabilities.
6. Binary Packages
There are eight different ffmpeg-kit
packages distributed on
Github,
Maven Central and CocoaPods.
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 |
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 |
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 |
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 |
AVFoundation
is not available ontvOS
,VideoToolbox
is not available ontvOS
LTS releases
7. Versions
FFmpegKit
binaries generated use the same major and minor version numbers as the upstream FFmpeg
project. The exact
version number is obtained using git describe --tags
. dev
part in FFmpeg
version number indicates that FFmpeg
source is cloned from the FFmpeg
master
branch.
FFmpegKit Version | FFmpeg Version | Release Date |
---|---|---|
4.4 | 4.4-dev-3015 | Mar 03, 2021 |
4.4.LTS | 4.4-dev-3015 | Mar 03, 2021 |
8. LTS Releases
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 |
Xcode Compatibility | 11.0 or later | 7.3.1 or later |
iOS SDK | 12.1 | 9.3 |
iOS AVFoundation | Yes | - |
iOS Architectures | arm64 arm64-simulator arm64-mac-catalyst x86-64 x86-64-mac-catalyst |
armv7 arm64 i386 x86-64 |
macOS SDK | 10.15 | 10.11 |
macOS AVFoundation | Yes | - |
macOS Architectures | arm64 x86-64 |
x86-64 |
tvOS SDK | 10.2 | 9.2 |
tvOS Architectures | arm64 x86-64 arm64-simulator |
arm64 x86-64 |
9. 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, concurrent command execution.
10. 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.
11. Patents
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.
12. 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
branch. Therefore, if you want to create a pull request, please open it against
the development
.