# FFmpegKit FFmpeg Kit for applications. ### 1. Features - Scripts to build FFmpeg libraries - `FFmpegKit` wrapper library to run `FFmpeg`/`FFprobe` commands in applications - Supports Android, iOS, macOS and tvOS - Based on FFmpeg `v4.4-dev` with optional system and external libraries - 8 prebuilt binary packages available at [Github](https://github.com/tanersener/ffmpeg-kit/releases), [Maven Central](https://search.maven.org) and [CocoaPods](https://cocoapods.org). - Licensed under `LGPL 3.0`, or `GPL v3.0` if GPL licensed libraries are enabled ### 2. Android See [Android](https://github.com/tanersener/ffmpeg-kit/tree/development/android) to learn more about `FFmpegKit` for `Android`. ### 3. iOS, macOS, tvOS See [Apple](https://github.com/tanersener/ffmpeg-kit/tree/development/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 optional 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](https://github.com/tanersener/ffmpeg-kit/releases), [Maven Central](https://search.maven.org) and [CocoaPods](https://cocoapods.org). Below you can see which 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
- `AVFoundation` is not available on `tvOS`, `VideoToolbox` is not available on `tvOS` 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](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.4) | 4.4-dev-3015 | Mar 03, 2021 | | [4.4.LTS](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.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](https://github.com/tanersener/ffmpeg-kit-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](https://ffmpeg.org/legal.html). `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](https://www.openh264.org/faq.html) 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`. ### 13. See Also - [FFmpeg API Documentation](https://ffmpeg.org/doxygen/4.0/index.html) - [FFmpeg Wiki](https://trac.ffmpeg.org/wiki/WikiStart) - [FFmpeg External Library Licenses](https://www.ffmpeg.org/doxygen/4.0/md_LICENSE.html)