From 4054ad19e1cd9df938c29d3ac199d9c218a76f4f Mon Sep 17 00:00:00 2001 From: Javernaut Date: Sun, 10 Mar 2019 16:00:39 +0100 Subject: [PATCH] Initial import --- .gitignore | 3 + README.md | 29 +++++++ ffmpeg-android-maker.sh | 146 ++++++++++++++++++++++++++++++++++++ images/output_structure.png | Bin 0 -> 47078 bytes 4 files changed, 178 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100755 ffmpeg-android-maker.sh create mode 100644 images/output_structure.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3977d20 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +build +output +sources \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..68e3ecd --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# ffmpeg-android-maker + +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: +![Markdown Here logo](images/output_structure.png) +The actual content of all this directories depends on how the FFmpeg was configured before assembling. For my purpose I enabled only *libavcodec*, *libavformat* and *libavutil*, but you can set your own configuration to make the FFmpeg you need. +The version of FFmpeg here is **4.1.1**. And the script expects to use Android NDK **r19**. Starting with this versions of FFmpeg and NDK the whole process became much simpler. + +## Supported architectures + +* armeabi-v7a +* arm64-v8a +* x86 +* x86_64 + +## Prerequisites + +You have to define an environment variable `ANDROID_NDK_HOME` and set the correct path to your Android NDK. + +## How to use + +Well, just execute the script :) Examine the `output` directory after. + +## Known issues: + +The x86 binary doesn't have assembler optimizations, since they bring text relocations. So it may encounter certain performance issues. The x86_64 doesn't have this problem though. + +## TODO: + +Upload the sample project where the compiled library is actually used. \ No newline at end of file diff --git a/ffmpeg-android-maker.sh b/ffmpeg-android-maker.sh new file mode 100755 index 0000000..8074380 --- /dev/null +++ b/ffmpeg-android-maker.sh @@ -0,0 +1,146 @@ +#!/usr/bin/env bash + +FFMPEG_VERSION=4.1.1 + +# Directories used by the script +BASE_DIR="$( cd "$( dirname "$0" )" && pwd )" +SOURCES_DIR=${BASE_DIR}/sources +FFMPEG_SOURCES=${SOURCES_DIR}/ffmpeg-${FFMPEG_VERSION} +OUTPUT_DIR=${BASE_DIR}/output +BUILD_DIR=${BASE_DIR}/build + +# No incremental compilation here. Just drop what was built previously +rm -rf ${BUILD_DIR} +rm -rf ${OUTPUT_DIR} +mkdir -p ${OUTPUT_DIR} + +# Test if sources of the FFMpeg exist. If not - download them +function ensureSources() { + if [[ ! -d "$FFMPEG_SOURCES" ]]; then + TARGET_FILE_NAME=ffmpeg-${FFMPEG_VERSION}.tar.bz2 + TARGET_FILE_PATH=${SOURCES_DIR}/${TARGET_FILE_NAME} + + mkdir -p ${SOURCES_DIR} + curl https://www.ffmpeg.org/releases/${TARGET_FILE_NAME} --output ${TARGET_FILE_PATH} + tar xvjf ${TARGET_FILE_PATH} -C ${SOURCES_DIR} + rm ${TARGET_FILE_PATH} + fi +} + +# Actual magic of configuring and compiling of FFMpeg for a certain architecture. +# Supported architectures are: armeabi-v7a, arm64-v8a, x86 and x86_64 +function assemble() { + cd ${FFMPEG_SOURCES} + + ARCH=$1 + API_LEVEL=$2 + + TOOLCHAIN_PATH=${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/darwin-x86_64 + SYSROOT=${TOOLCHAIN_PATH}/sysroot + + CC_ANDROID_POSTFIX= + EXTRA_CFLAGS= + EXTRA_CONFIGURE_FLAGS= + + case $ARCH in + armeabi-v7a) + FFMPEG_ARCH_FLAG=arm + CROSS_PREFIX=arm-linux-androideabi- + CC_PREFIX=armv7a + CC_ANDROID_POSTFIX=eabi + ;; + arm64-v8a) + FFMPEG_ARCH_FLAG=aarch64 + CROSS_PREFIX=aarch64-linux-android- + CC_PREFIX=aarch64 + ;; + x86) + FFMPEG_ARCH_FLAG=x86 + CROSS_PREFIX=i686-linux-android- + CC_PREFIX=i686 + EXTRA_CFLAGS=-mno-stackrealign + EXTRA_CONFIGURE_FLAGS=--disable-asm + ;; + x86_64) + FFMPEG_ARCH_FLAG=x86_64 + CROSS_PREFIX=x86_64-linux-android- + CC_PREFIX=x86_64 + ;; + esac + + CC=${TOOLCHAIN_PATH}/bin/${CC_PREFIX}-linux-android${CC_ANDROID_POSTFIX}${API_LEVEL}-clang + + ./configure \ + --prefix=${BUILD_DIR}/${ARCH} \ + --disable-doc \ + --enable-cross-compile \ + --cross-prefix=${TOOLCHAIN_PATH}/bin/${CROSS_PREFIX} \ + --target-os=android \ + --cc=${CC} \ + --arch=${FFMPEG_ARCH_FLAG} \ + --extra-cflags="-O3 -fPIC $EXTRA_CFLAGS" \ + --sysroot=${SYSROOT} \ + --enable-shared \ + --disable-static \ + --disable-debug \ + --enable-small \ + --disable-runtime-cpudetect \ + --disable-programs \ + --disable-muxers \ + --disable-encoders \ + --disable-bsfs \ + --disable-pthreads \ + --disable-avdevice \ + --disable-swscale \ + --disable-network \ + --disable-postproc \ + --disable-swresample \ + --disable-avfilter \ + ${EXTRA_CONFIGURE_FLAGS} + + make clean + make -j8 + make install + + cd ${BASE_DIR} +} + +# Placing build *.so files into the /bin directory +function installLibs() { + BUILD_SUBDIR=$1 + + OUTPUT_SUBDIR=${OUTPUT_DIR}/lib/${BUILD_SUBDIR} + CP_DIR=${BUILD_DIR}/${BUILD_SUBDIR} + + mkdir -p ${OUTPUT_SUBDIR} + cp ${CP_DIR}/lib/*.so ${OUTPUT_SUBDIR} +} + +function build() { + ARCH=$1 + ANDROID_API=$2 + + assemble ${ARCH} ${ANDROID_API} + installLibs ${ARCH} +} + +# Placing build header files into the /bin directory +# Note, there is a only one such a folder since this headers are the same for all architectures +# May not be true for different configurations though +function installHeaders() { + cd ${BUILD_DIR} + cd "$(ls -1 | head -n1)" + cp -r include ${OUTPUT_DIR} + cd ${BASE_DIR} +} + +# Actual work + +ensureSources + +build armeabi-v7a 16 +build arm64-v8a 21 +build x86 16 +build x86_64 21 + +installHeaders diff --git a/images/output_structure.png b/images/output_structure.png new file mode 100644 index 0000000000000000000000000000000000000000..0c0ffaf91bb652f079264c3f5990a814d29f0ccf GIT binary patch literal 47078 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 CK>U#a literal 0 HcmV?d00001