Skip to content

Project Layout

Taner Sener edited this page Oct 3, 2022 · 6 revisions

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

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

Project root includes nine directories, five top level build scripts (android.sh, ios.sh, linux.sh, macos.sh and tvos.sh), one combine script (apple.sh) for Apple platforms, one LICENSE file and three markdown files (README.md, CONTRIBUTING.md, CODE_OF_CONDUCT.md).

  • 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 the 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 the documentation and digital assets.

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

  • linux directory includes files necessary to build FFmpegKit C++ library for Linux. These files are;

    • Configuration files required by Autotools
    • Documentation configuration for doxygen
    • Library source code inside the src folder
    • README.md file
  • 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, apple and linux 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 the android, apple and linux 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
    • 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
    • Linux headers and libraries are located under the bundle-linux folder
    • macOS xcframeworks for Main builds are located under the bundle-apple-xcframework-macos 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 xcframeworks for Main builds are located under the bundle-apple-xcframework-tvos 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
Clone this wiki locally