You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Javernaut fa40d415bf Updating the output layout image 5 years ago
images Updating the output layout image 5 years ago
scripts Using CMake from Android SDK 5 years ago
.gitignore Printing stats about text relocations presence 5 years ago
.travis.yml Using CMake from Android SDK 5 years ago
README.md Updating README.md regarding the necessity of ANDROID_SDK_HOME variable and CMake 5 years ago
ffmpeg-android-maker.sh Finishing the base for external libraries integration 5 years ago

README.md

ffmpeg-android-maker

Build Status

Here is a script that downloads the source code of FFmpeg library and assembles it for Android. The script produces shared libraries as well as header files. The output structure looks like this:

The actual content of all this directories depends on how the FFmpeg was configured before assembling. For my purpose I enabled only libavcodec, libavformat, libavutil and libswscale, but you can set your own configuration to make the FFmpeg you need.

The version of FFmpeg here by default is 4.2.1 (but can be overridden). And the script expects to use at least Android NDK r19 (r20 also works ok).

The details of how this script is implemented are described in this blog post.

Supported Android ABIs

  • armeabi-v7a
  • arm64-v8a
  • x86
  • x86_64

Supported host OS

On macOS or Linux just execute the script in terminal.

It is also possible to execute this script on a Windows machine with MSYS2. You also need to install specific packages to it: make, git, diffutils and tar. The script supports both 32-bit and 64-bit versions of Windows.

Prerequisites

You have to define two environment variables:

  • ANDROID_SDK_HOME - path to your Android SDK
  • ANDROID_NDK_HOME - path to your Android NDK

Also, if you want to build libaom, then you have to install cmake;3.10.2.4988404 package via Android SDK.

See it in action

Actual Android app that uses the output of the script can be found here.

Features

Setting your own FFmpeg version. You can actually override the version of FFmpeg used by the script. See details here.

Test your script in a cloud. This repository has CI integration and you can use it too for your own configurations of FFmpeg. See details here.

Text relocations monitoring. After a build you can look into stats/text-relocations.txt file. That file lists all *.so files that were built and reports if they have text relocations. If you don't see any mentioning of 'TEXTREL' in the file, you are good. Otherwise, you will see exact binaries that have this problem.