Libraries - tanersener/ffmpeg-kit GitHub Wiki

The following table shows the types of the libraries created by FFmpegKit build scripts and published in the FFmpegKit releases.

Notes:

  1. On Apple platforms, the primary bundle format is xcframeworks/frameworks. Library types listed below are used to create them
  2. On Linux, FFmpeg is linked with two types of External Libraries. First, with static external libraries that are downloaded and built by FFmpegKit build scripts. And secondly, with shared external libraries that are installed manually on the host system. The table below shows only the former
  3. Supplementary Libraries are libraries that are required to build External Libraries
FFmpegKit FFmpeg External Libraries Supplementary Libraries
Android shared (.so) shared (.so) static (.a) static (.a)
Apple
(iOS, macOS, tvOS)
>= v4.5.1 shared (.dylib) >= v4.5.1 shared (.dylib) static (.a) static (.a)
< v4.5.1 static (.a) < v4.5.1 static (.a)
Linux shared (.so) shared (.so) static (.a) static (.a)

Below you can see how they are linked.

FFmpegKit FFmpeg External Libraries External Libraries On The Host Supplementary Libraries
Android Dynamically linked to FFmpeg Statically linked to External Libraries Statically linked to Supplementary Libraries - -
Apple
(iOS, macOS, tvOS)
>= v4.5.1 Dynamically linked to FFmpeg >= v4.5.1 Dynamically linked to External Libraries Statically linked to Supplementary Libraries - -
< v4.5.1 Statically linked to FFmpeg < v4.5.1 Statically linked to External Libraries
Linux Dynamically linked to FFmpeg Statically linked to External Libraries Statically linked to Supplementary Libraries - -
Dynamically linked to External Libraries on the Host

And, the following table shows the library files included in FFmpegKit bundles.

Notice that when FFmpeg is built as shared libraries, External and Supplementary Libraries are not put inside the bundles. Because, on all platforms except Linux, they are statically linked and their object code is already inside the FFmpeg libraries. And, on Linux, the source code of libraries that are statically linked is already inside FFmpeg libraries. And the ones that are dynamically linked are installed manually. Thus, we do not include them in FFmpegKit bundles on Linux.

FFmpegKit FFmpeg External Libraries Supplementary Libraries
Android x x - -
Apple
(iOS, macOS, tvOS)
x x >= v4.5.1 - >= v4.5.1 -
< v4.5.1 x < v4.5.1 x
Linux x x - -
⚠️ **GitHub.com Fallback** ⚠️