Skip to content

Project Layout

Taner Sener edited this page Jul 4, 2026 · 3 revisions

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

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

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

  • The android folder contains the files necessary to build the FFmpegKitNext Android library. These files are:

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

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

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

  • The linux directory includes the files necessary to build the FFmpegKitNext C++ library for Linux. These files are:

    • Configuration files required by Autotools
    • A documentation configuration for doxygen
    • The library source code inside the src folder
    • A README.md file
  • The react-native folder contains the files of the react-native plugin, which supports the Android and iOS platforms.

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

    • Scripts responsible for cross-compiling external libraries are grouped by platform name and can be found under the android, apple and linux folders
    • The function scripts contain platform-specific bash functions
    • The main scripts are responsible for building an architecture for a platform
    • The run scripts execute the cross-compilation scripts under the android, apple and linux folders
    • The start scripts (start-android.sh, start-ios.sh, start-linux.sh, start-macos.sh, start-tvos.sh and start-apple.sh) are the per-platform build entry points. The top-level nix-<platform>.sh wrappers only prepare a Nix environment and then invoke them, so these scripts can be run directly to build without Nix, as long as the required toolchain is already available on the system
    • The source.sh script contains external library repository URLs and their versions
    • The variable.sh script includes common variables used by all platforms
  • The src directory is empty by default. The source code of the enabled external libraries is downloaded into this directory by the top-level build scripts.

  • The tools directory includes patch files and release scripts.

  • A temporary folder named .tmp is created at the start of the build to store temporary files needed by the scripts, such as the gas-preprocessor.pl script and the gnu-config project.

  • After compilation, all compiled objects (libraries, frameworks, xcframeworks, Android archives, etc.) are created as bundles under the prebuilt directory.

    • The Android archive (.aar) in local Maven format is located under the bundle-android-aar-${API}-maven folder
    • The iOS frameworks are located under the bundle-apple-framework-ios-${IOS_MIN_VERSION} folder
    • The iOS xcframework is located under the bundle-apple-xcframework-ios-${IOS_MIN_VERSION} folder
    • The macOS frameworks are located under the bundle-apple-framework-macos-${MACOS_MIN_VERSION} folder
    • The macOS xcframework is located under the bundle-apple-xcframework-macos-${MACOS_MIN_VERSION} folder
    • The tvOS frameworks are located under the bundle-apple-framework-tvos-${TVOS_MIN_VERSION} folder
    • The tvOS xcframework is located under the bundle-apple-xcframework-tvos-${TVOS_MIN_VERSION} folder
    • The Linux headers and libraries are located under the bundle-linux folder

Clone this wiki locally