Skip to content

Commit

Permalink
feat(android): build ffmpeg with libsrt succeed
Browse files Browse the repository at this point in the history
  • Loading branch information
befovy committed Jan 11, 2020
1 parent a95deb9 commit 546bc20
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 62 deletions.
28 changes: 15 additions & 13 deletions android/contrib/tools/do-compile-ffmpeg.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ fi


FF_BUILD_ROOT=`pwd`
FF_ANDROID_PLATFORM=android-9
FF_ANDROID_PLATFORM=android-14


FF_BUILD_NAME=
Expand Down Expand Up @@ -166,7 +166,6 @@ elif [ "$FF_ARCH" = "arm64" ]; then

FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS"
FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS"

FF_ASSEMBLER_SUB_DIRS="aarch64 neon"

else
Expand All @@ -187,16 +186,16 @@ FF_TOOLCHAIN_PATH=$FF_BUILD_ROOT/build/toolchain-$FF_ARCH
FF_MAKE_TOOLCHAIN_FLAGS="$FF_MAKE_TOOLCHAIN_FLAGS --install-dir=$FF_TOOLCHAIN_PATH"

FF_SYSROOT=$FF_TOOLCHAIN_PATH/sysroot
FF_PREFIX=$FF_BUILD_ROOT/build/$FF_BUILD_NAME/output
FF_PREFIX=$FF_BUILD_ROOT/build/output-$FF_ARCH

FF_DEP_OPENSSL_INC=$FF_BUILD_ROOT/build/$FF_BUILD_NAME_OPENSSL/output/include
FF_DEP_OPENSSL_LIB=$FF_BUILD_ROOT/build/$FF_BUILD_NAME_OPENSSL/output/lib
FF_DEP_OPENSSL_INC=$FF_PREFIX/include
FF_DEP_OPENSSL_LIB=$FF_PREFIX/lib

FF_DEP_LIBSOXR_INC=$FF_BUILD_ROOT/build/$FF_BUILD_NAME_LIBSOXR/output/include
FF_DEP_LIBSOXR_LIB=$FF_BUILD_ROOT/build/$FF_BUILD_NAME_LIBSOXR/output/lib
FF_DEP_LIBSOXR_INC=$FF_PREFIX/include
FF_DEP_LIBSOXR_LIB=$FF_PREFIX/lib

FF_DEP_LIBSRT_INC=$FF_BUILD_ROOT/build/$FF_BUILD_NAME_LIBSRT/output/include
FF_DEP_LIBSRT_LIB=$FF_BUILD_ROOT/build/$FF_BUILD_NAME_LIBSRT/output/lib
FF_DEP_LIBSRT_INC=$FF_PREFIX/include
FF_DEP_LIBSRT_LIB=$FF_PREFIX/lib

case "$UNAME_S" in
CYGWIN_NT-*)
Expand Down Expand Up @@ -274,12 +273,15 @@ fi
if [ -f "${FF_DEP_LIBSRT_LIB}/libsrt.a" ]; then
echo "libsrt detected"
FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libsrt"
# FF_CFLAGS="$FF_CFLAGS -I${FF_DEP_LIBSRT_INC}"
# FF_DEP_LIBS="$FF_DEP_LIBS -L${FF_DEP_LIBSRT_LIB} -lsrt -lstdc++ -lm"
FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-protocol=libsrt"

FF_CFLAGS="$FF_CFLAGS -I${FF_DEP_LIBSRT_INC}"
FF_DEP_LIBS="$FF_DEP_LIBS -L${FF_DEP_LIBSRT_LIB} -lsrt -lc -lm -ldl -lcrypto -lssl -lstdc++"
fi

export PKG_CONFIG_PATH="${FF_DEP_LIBSRT_LIB}/pkgconfig"
export PKG_CONFIG_PATH="${FF_PREFIX}/lib/pkgconfig"

FF_CFG_FLAGS="$FF_CFG_FLAGS --pkgconfigdir=${FF_PREFIX}/lib/pkgconfig"

FF_CFG_FLAGS="$FF_CFG_FLAGS $COMMON_FF_CFG_FLAGS"

Expand All @@ -292,7 +294,7 @@ FF_CFG_FLAGS="$FF_CFG_FLAGS --cross-prefix=${FF_CROSS_PREFIX}-"
FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-cross-compile"
FF_CFG_FLAGS="$FF_CFG_FLAGS --target-os=linux"
FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-pic"
# FF_CFG_FLAGS="$FF_CFG_FLAGS --pkg-config=true"
FF_CFG_FLAGS="$FF_CFG_FLAGS --pkg-config=pkg-config"
# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-symver"

if [ "$FF_ARCH" = "x86" ]; then
Expand Down
62 changes: 34 additions & 28 deletions android/contrib/tools/do-compile-libsrt.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ fi


FF_BUILD_ROOT=`pwd`
FF_ANDROID_PLATFORM=android-9
FF_ANDROID_PLATFORM=android-14


FF_BUILD_NAME=
Expand All @@ -60,6 +60,8 @@ FF_MAKE_FLAGS=$IJK_MAKE_FLAG
FF_GCC_VER=$IJK_GCC_VER
FF_GCC_64_VER=$IJK_GCC_64_VER

ANDROID_ABI=
CMAKE_ANDROID_ARCH_ABI=

#----- armv7a begin -----
if [ "$FF_ARCH" = "armv7a" ]; then
Expand All @@ -71,6 +73,10 @@ if [ "$FF_ARCH" = "armv7a" ]; then

FF_PLATFORM_CFG_FLAGS="android-armv7"

ANDROID_ABI=armeabi-v7a
CMAKE_ANDROID_ARCH_ABI=armeabi-v7a
CMAKE_ANDROID_API=14

elif [ "$FF_ARCH" = "armv5" ]; then
FF_BUILD_NAME=libsrt-armv5
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
Expand All @@ -79,7 +85,9 @@ elif [ "$FF_ARCH" = "armv5" ]; then
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_VER}

FF_PLATFORM_CFG_FLAGS="android"

CMAKE_ANDROID_API=14
ANDROID_ABI=armeabi
CMAKE_ANDROID_ARCH_ABI=armeabi
elif [ "$FF_ARCH" = "x86" ]; then
FF_BUILD_NAME=libsrt-x86
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
Expand All @@ -88,23 +96,26 @@ elif [ "$FF_ARCH" = "x86" ]; then
FF_TOOLCHAIN_NAME=x86-${FF_GCC_VER}

FF_PLATFORM_CFG_FLAGS="android-x86"

CMAKE_ANDROID_API=14
ANDROID_ABI=x86
CMAKE_ANDROID_ARCH_ABI=x86
# FF_CFG_FLAGS="$FF_CFG_FLAGS no-asm"

elif [ "$FF_ARCH" = "x86_64" ]; then
FF_ANDROID_PLATFORM=android-21

CMAKE_ANDROID_API=21
FF_BUILD_NAME=libsrt-x86_64
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME

FF_CROSS_PREFIX=x86_64-linux-android
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_64_VER}

FF_PLATFORM_CFG_FLAGS="linux-x86_64"

ANDROID_ABI=x86_64
CMAKE_ANDROID_ARCH_ABI=x86_64
elif [ "$FF_ARCH" = "arm64" ]; then
FF_ANDROID_PLATFORM=android-21

CMAKE_ANDROID_API=21
FF_BUILD_NAME=libsrt-arm64
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME

Expand All @@ -113,6 +124,8 @@ elif [ "$FF_ARCH" = "arm64" ]; then

FF_PLATFORM_CFG_FLAGS="linux-aarch64"

ANDROID_ABI=arm64-v8a
CMAKE_ANDROID_ARCH_ABI=arm64-v8a
else
echo "unknown architecture $FF_ARCH";
exit 1
Expand All @@ -121,7 +134,7 @@ fi
FF_TOOLCHAIN_PATH=$FF_BUILD_ROOT/build/toolchain-$FF_ARCH

FF_SYSROOT=$FF_TOOLCHAIN_PATH/sysroot
FF_PREFIX=$FF_BUILD_ROOT/build/$FF_BUILD_NAME/output
FF_PREFIX=$FF_BUILD_ROOT/build/output-$FF_ARCH

mkdir -p $FF_PREFIX
# mkdir -p $FF_SYSROOT
Expand Down Expand Up @@ -166,42 +179,33 @@ FF_CFG_FLAGS="$FF_CFG_FLAGS $COMMON_FF_CFG_FLAGS"
# FF_CFG_FLAGS="$FF_CFG_FLAGS no-shared"
# FF_CFG_FLAGS="$FF_CFG_FLAGS --openssldir=$FF_PREFIX"


export PKG_CONFIG_PATH="${FF_PREFIX}/lib/pkgconfig"

FF_CFG_FLAGS="$FF_CFG_FLAGS --cmake-system-name=Android"
FF_CFG_FLAGS="$FF_CFG_FLAGS --android-toolchain=gcc"
# FF_CFG_FLAGS="$FF_CFG_FLAGS --with-compiler-prefix=${FF_CROSS_PREFIX}-"
# FF_CFG_FLAGS="$FF_CFG_FLAGS --with-target-path=$FF_TOOLCHAIN_PATH"
FF_CFG_FLAGS="$FF_CFG_FLAGS --with-compiler-prefix=${FF_CROSS_PREFIX}-"
FF_CFG_FLAGS="$FF_CFG_FLAGS --with-target-path=$FF_TOOLCHAIN_PATH"

FF_CFG_FLAGS="$FF_CFG_FLAGS --android-abi=$ANDROID_ABI"
FF_CFG_FLAGS="$FF_CFG_FLAGS --cmake-android-arch-abi=$CMAKE_ANDROID_ARCH_ABI"
FF_CFG_FLAGS="$FF_CFG_FLAGS --android-stl=c++_static"
FF_CFG_FLAGS="$FF_CFG_FLAGS --cmake-android-api=$CMAKE_ANDROID_API"

# FF_CFG_FLAGS="$FF_CFG_FLAGS --cmake-android-arch-abi=$FF_ARCH"
# FF_CFG_FLAGS="$FF_CFG_FLAGS --cmake-android-standalone-toolchain=${FF_TOOLCHAIN_PATH}"
FF_CFG_FLAGS="$FF_CFG_FLAGS --cmake-prefix-path=${FF_PREFIX}"
FF_CFG_FLAGS="$FF_CFG_FLAGS --cmake-install-prefix=${FF_PREFIX}"
FF_CFG_FLAGS="$FF_CFG_FLAGS --use-openssl-pc=off"
FF_CFG_FLAGS="$FF_CFG_FLAGS --openssl-include-dir=$FF_BUILD_ROOT/build/openssl-$FF_ARCH/output/include"
FF_CFG_FLAGS="$FF_CFG_FLAGS --openssl-ssl-library=$FF_BUILD_ROOT/build/openssl-$FF_ARCH/output/lib/libssl.a"
FF_CFG_FLAGS="$FF_CFG_FLAGS --openssl-crypto-library=$FF_BUILD_ROOT/build/openssl-$FF_ARCH/output/lib/libcrypto.a"
FF_CFG_FLAGS="$FF_CFG_FLAGS --openssl-include-dir=${FF_PREFIX}/include"
FF_CFG_FLAGS="$FF_CFG_FLAGS --openssl-ssl-library=${FF_PREFIX}/lib/libssl.a"
FF_CFG_FLAGS="$FF_CFG_FLAGS --openssl-crypto-library=${FF_PREFIX}/lib/libcrypto.a"
FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-shared=off --enable-c++11=off"
FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-static=on"
FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-apps=off"
FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-c++-deps=on"
FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-c-deps=on"
# FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-c-deps=on"

# FF_CFG_FLAGS="$FF_CFG_FLAGS $FF_PLATFORM_CFG_FLAGS"
FF_CFG_FLAGS="$FF_CFG_FLAGS --use-static-libstdc++=on"


export CC=${FF_CROSS_PREFIX}-gcc
export AR=${FF_CROSS_PREFIX}-ar
export AS=${FF_CROSS_PREFIX}-gcc
export AS=${FF_CROSS_PREFIX}-gcc
export CXX=${FF_CROSS_PREFIX}-g++
export LD=${FF_CROSS_PREFIX}-ld
# export STRIP=${FF_CROSS_PREFIX}-strip

# export CFLAGS="$CFLAGS --sysroot=${FF_TOOLCHAIN_PATH}/sysroot -fPIE -fPIC"
export CFLAGS="$CFLAGS -fPIE -fPIC"
# export CXXFLAGS="$CXXFLAGS -march=armv7-a"
export LDFLAGS="$LDFLAGS -pie"

#--------------------
Expand Down Expand Up @@ -230,3 +234,5 @@ echo "--------------------"
make depend
make $FF_MAKE_FLAGS
make install

sed -i '' 's|-lsrt |-lsrt -lc -lm -ldl -lcrypto -lssl -lstdc++|g' ${FF_PREFIX}/lib/pkgconfig/srt.pc
6 changes: 4 additions & 2 deletions android/contrib/tools/do-compile-openssl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ fi


FF_BUILD_ROOT=`pwd`
FF_ANDROID_PLATFORM=android-9
FF_ANDROID_PLATFORM=android-14


FF_BUILD_NAME=
Expand Down Expand Up @@ -122,7 +122,7 @@ fi
FF_TOOLCHAIN_PATH=$FF_BUILD_ROOT/build/toolchain-$FF_ARCH

FF_SYSROOT=$FF_TOOLCHAIN_PATH/sysroot
FF_PREFIX=$FF_BUILD_ROOT/build/$FF_BUILD_NAME/output
FF_PREFIX=$FF_BUILD_ROOT/build/output-$FF_ARCH

mkdir -p $FF_PREFIX
# mkdir -p $FF_SYSROOT
Expand Down Expand Up @@ -168,6 +168,8 @@ FF_CFG_FLAGS="$FF_CFG_FLAGS --openssldir=$FF_PREFIX"
FF_CFG_FLAGS="$FF_CFG_FLAGS --cross-compile-prefix=${FF_CROSS_PREFIX}-"
FF_CFG_FLAGS="$FF_CFG_FLAGS $FF_PLATFORM_CFG_FLAGS"

export LDFLAGS="-pie"

#--------------------
echo ""
echo "--------------------"
Expand Down
2 changes: 1 addition & 1 deletion android/contrib/tools/do-detect-env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ case "$IJK_NDK_REL" in
IJK_NDK_REL=$(grep -o '^Pkg\.Revision.*=[0-9]*.*' $ANDROID_NDK/source.properties 2>/dev/null | sed 's/[[:space:]]*//g' | cut -d "=" -f 2)
echo "IJK_NDK_REL=$IJK_NDK_REL"
case "$IJK_NDK_REL" in
11*|12*|13*|14*)
11*|12*|13*|14*|15*)
if test -d ${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.9
then
echo "NDKr$IJK_NDK_REL detected"
Expand Down
10 changes: 5 additions & 5 deletions android/ijkplayer/fijkplayer-full/src/main/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,15 @@ set(ANDROID_CONTRIB_PATH ${FIJKROOT_PATH}/android/contrib/build)
message(STATUS "ANDROID_CONTRIB_PATH:${ANDROID_CONTRIB_PATH}")

if (${ANDROID_ABI} STREQUAL "arm64-v8a")
set(IJK_FFMPAG_BUILD_DIR ${ANDROID_CONTRIB_PATH}/ffmpeg-arm64/output)
set(IJK_FFMPAG_BUILD_DIR ${ANDROID_CONTRIB_PATH}/output-arm64)
elseif (${ANDROID_ABI} STREQUAL "armeabi-v7a")
set(IJK_FFMPAG_BUILD_DIR ${ANDROID_CONTRIB_PATH}/ffmpeg-armv7a/output)
set(IJK_FFMPAG_BUILD_DIR ${ANDROID_CONTRIB_PATH}/output-armv7a)
elseif (${ANDROID_ABI} STREQUAL "armeabi")
set(IJK_FFMPAG_BUILD_DIR ${ANDROID_CONTRIB_PATH}/ffmpeg-armv5/output)
set(IJK_FFMPAG_BUILD_DIR ${ANDROID_CONTRIB_PATH}/output-armv5)
elseif (${ANDROID_ABI} STREQUAL "x86")
set(IJK_FFMPAG_BUILD_DIR ${ANDROID_CONTRIB_PATH}/ffmpeg-x86/output)
set(IJK_FFMPAG_BUILD_DIR ${ANDROID_CONTRIB_PATH}/output-x86)
elseif (${ANDROID_ABI} STREQUAL "x86_64")
set(IJK_FFMPAG_BUILD_DIR ${ANDROID_CONTRIB_PATH}/ffmpeg-x86_64/output)
set(IJK_FFMPAG_BUILD_DIR ${ANDROID_CONTRIB_PATH}/output-x86_64)
endif ()

if (NOT DEFINED IJK_FFMPAG_BUILD_DIR)
Expand Down
6 changes: 3 additions & 3 deletions config/module-mac.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-swscale-alpha"

# Program options:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-programs"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffmpeg"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffplay"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffprobe"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-ffmpeg"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-ffplay"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-ffprobe"
# export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffserver"

# Documentation options:
Expand Down
17 changes: 7 additions & 10 deletions osx/tools/do-compile-ffmpeg.sh
Original file line number Diff line number Diff line change
Expand Up @@ -114,9 +114,6 @@ FFMPEG_CFG_FLAGS="$FFMPEG_CFG_FLAGS --enable-demuxers"
FFMPEG_CFG_FLAGS="$FFMPEG_CFG_FLAGS --enable-encoder=mjpeg"
FFMPEG_CFG_FLAGS="$FFMPEG_CFG_FLAGS --enable-hwaccels"

# FFMPEG_CFG_FLAGS="$FFMPEG_CFG_FLAGS --pkg-config=true"


FFMPEG_CFG_FLAGS="$FFMPEG_CFG_FLAGS --enable-videotoolbox"

echo "build_root: $FF_BUILD_ROOT"
Expand Down Expand Up @@ -202,32 +199,32 @@ FFMPEG_LDFLAGS="$FFMPEG_CFLAGS"
echo "\n--------------------"
echo "[*] check OpenSSL"
echo "----------------------"
# FFMPEG_DEP_OPENSSL_INC=/usr/local/opt/openssl/include
FFMPEG_DEP_OPENSSL_INC=/usr/local/opt/openssl/include
FFMPEG_DEP_OPENSSL_LIB=/usr/local/opt/openssl/lib
#--------------------
# with openssl
if [ -f "${FFMPEG_DEP_OPENSSL_LIB}/libssl.a" ]; then
FFMPEG_CFG_FLAGS="$FFMPEG_CFG_FLAGS --enable-openssl"

# FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I${FFMPEG_DEP_OPENSSL_INC}"
# FFMPEG_DEP_LIBS="$FFMPEG_CFLAGS -L${FFMPEG_DEP_OPENSSL_LIB} -lssl -lcrypto"
FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I${FFMPEG_DEP_OPENSSL_INC}"
FFMPEG_DEP_LIBS="$FFMPEG_CFLAGS -L${FFMPEG_DEP_OPENSSL_LIB} -lssl -lcrypto"

else
echo "openssl not found"
exit 1;
fi


# FFMPEG_DEP_LIBSRT_INC=${FF_BUILD_ROOT}/build/libsrt-x86_64/output/include
# FFMPEG_DEP_LIBSRT_LIB=${FF_BUILD_ROOT}/build/libsrt-x86_64/output/lib
FFMPEG_DEP_LIBSRT_INC=${FF_BUILD_ROOT}/build/libsrt-x86_64/output/include
FFMPEG_DEP_LIBSRT_LIB=${FF_BUILD_ROOT}/build/libsrt-x86_64/output/lib

if [ -f "${FF_BUILD_ROOT}/build/lib/libsrt.a" ]; then
echo "detect libsrt"

FFMPEG_CFG_FLAGS="$FFMPEG_CFG_FLAGS --enable-libsrt"

# FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I${FFMPEG_DEP_LIBSRT_INC}"
# FFMPEG_DEP_LIBS="$FFMPEG_CFLAGS -L${FFMPEG_DEP_LIBSRT_LIB} -lsrt"
FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I${FFMPEG_DEP_LIBSRT_INC}"
FFMPEG_DEP_LIBS="$FFMPEG_CFLAGS -L${FFMPEG_DEP_LIBSRT_LIB} -lsrt"

fi

Expand Down

0 comments on commit 546bc20

Please sign in to comment.