Project Layout - tanersener/ffmpeg-kit GitHub Wiki

Files in this project are organised according to the layout below.

ffmpeg-kit/
├── LICENSE.LGPLv3
├── LICENSE.GPLv3
├── README.md
├── android/
│   ├── ffmpeg-kit-android-lib/
│   └── jni/
├── android.sh
├── apple/
│   └── src/
├── apple.sh
├── docs/
├── flutter/
├── ios.sh
├── macos.sh
├── prebuilt/
├── react-native/
├── scripts/
│   ├── android/
│   └── apple/
├── src/
├── tools/
├── tvos.sh
└── .tmp/

Project root includes eight directories, four top level build scripts (android.sh, ios.sh, macos.sh and tvos.sh), one combine script (apple.sh) for Apple platforms, two LICENSE files, and a README.md file.

  • android folder contains files necessary to build FFmpegKit Android library. These files are;

    • Configuration files required by gradle
    • Documentation configuration file for doxygen
    • Library source code inside the ffmpeg-kit-android-lib folder
    • NDK build files under jni folder
    • README.md file
  • apple directory includes files necessary to build FFmpegKit Objective-C library for iOS, macOS and tvOS. They are;

    • Configuration files required by Autotools
    • Documentation configuration for doxygen
    • Library source code inside the src folder
    • README.md file
  • docs folder contains documentation files and digital assets.

  • flutter folder contains the files of the flutter plugin that supports Android, iOS and macOS platforms.

  • react-native folder contains the files of the react-native plugin that supports Android and iOS platforms.

  • scripts directory includes all scripts called by the top-level build scripts.

    • Scripts responsible for cross-compiling external libraries are grouped according to the platform name; they can be found under the android and apple folders respectively
    • function scripts contain platform specific bash functions
    • main scripts are responsible for building an architecture for a platform
    • run scripts execute cross compilation scripts under android and apple folders
    • source.sh contains external library repository urls and their versions
    • variable.sh includes common variables used by all platforms
  • src directory is empty by default. The source code of enabled external libraries is downloaded into this directory by the top level build scripts.

  • tools directory includes patch files and release scripts.

  • A temporary folder named .tmp is created at the beginning to save temporary files needed by the scripts, e.g. gas-preprocessor.pl, gnu-config project.

  • After the compilation, all compiled objects (libraries, universal binaries, frameworks, xcframeworks, android archives, etc.) are created under the prebuilt directory.

    • Android archive (.aar file) for Main builds is located under the bundle-android-aar folder
    • Android archive (.aar file) for LTS builds is located under the bundle-android-aar-lts folder
    • iOS xcframeworks for Main builds are located under the bundle-apple-xcframework-ios folder
    • macOS xcframeworks for Main builds are located under the bundle-apple-xcframework-macos folder
    • tvOS xcframeworks for Main builds are located under the bundle-apple-xcframework-tvos folder
    • iOS frameworks for Main builds are located under the bundle-apple-framework-ios folder
    • iOS frameworks for LTS builds are located under the bundle-apple-framework-ios-lts folder
    • macOS frameworks for Main builds are located under the bundle-apple-framework-macos folder
    • macOS frameworks for LTS builds are located under the bundle-apple-framework-macos-lts folder
    • tvOS frameworks for Main builds are located under the bundle-apple-framework-tvos folder
    • tvOS frameworks for LTS builds are located under the bundle-apple-framework-tvos-lts folder