音视频开发中要用到的,之前修改编译没问题,现在记录下,方便下次使用
可编译 arm64-v8a和armv7-a架构的
ffmpeg集成x264需要编译好先编译好x264然后在configure 指令中的extra-cflags加入x264编译后的头文件路径和库的路径
1.ffmpeg编译脚本
#!/bin/bash
export NDK=/home/ubuntu/android-ndk-r21d #这里配置先你的 NDK 路径
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
function build_android
{
./configure \
--prefix=$PREFIX \
--enable-gpl \
--enable-static \
--disable-shared \
--disable-x86asm \
--disable-doc \
--cross-prefix=$CROSS_PREFIX \
--target-os=android \
--arch=$ARCH \
--cpu=$CPU \
--cc=$CC \
--cxx=$CXX \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS -L/home/ubuntu/x264/android/arm/lib" \
--extra-ldflags="$ADDI_LDFLAGS -I/home/ubuntu/x264/android/arm/include"
make clean
make -j16
make install
echo "============================ build android arm64-v8a success =========================="
}
#arm64-v8a
#ARCH=arm64
#CPU=armv8-a
#API=21
#CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clang
#CXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++
#SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot
#CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-
#PREFIX=$(pwd)/android/$CPU
#OPTIMIZE_CFLAGS="-march=$CPU"
#armv7-a
ARCH=arm
CPU=armv7-a
API=21
CC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang
CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang++
SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot
CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-
PREFIX=$(pwd)/android/$CPU
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
build_android
echo $PREFIX
- x264编译脚本
#!/bin/sh
ANDROID_NDK=/home/ubuntu/android-ndk-r21d
SDK_VERSION=21
build() {
ARCH=$1
if [ "$ARCH" = "arm64" ]; then
PLATFORM_PREFIX="aarch64-linux-android-"
CCPREFIX=aarch64-linux-android
HOST="aarch64"
PLATFORM_VERSION=4.9
elif [ "$ARCH" = "arm" ]; then
PLATFORM_PREFIX="arm-linux-androideabi-"
HOST="arm"
PLATFORM_VERSION=4.9
else
echo "unsupport ARCH:$ARCH."
exit
fi
PREFIX=~/android/${ARCH}
SYSROOT=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot
TOOLCHAIN=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64
CC=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/${CCPREFIX}${SDK_VERSION}-clang
echo "helsmdlsd+++++++++++++++++$CC"
echo "helsmdlsd+++++++++++++++++$SYSROOT"
CXX=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/${CCPREFIX}${SDK_VERSION}-clang++
CROSS_PREFIX=$TOOLCHAIN/bin/${PLATFORM_PREFIX}
NM=$TOOLCHAIN/bin/${PLATFORM_PREFIX}nm
./configure \
--prefix=$PREFIX \
--cross-prefix=$CROSS_PREFIX \
--sysroot=$SYSROOT \
--host=arm-linux \
--prefix=$PREFIX \
--enable-shared \
--enable-static \
--disable-asm \
--enable-pic \
--disable-cli \
--host=arm-linux \
make clean
make -j4
make install
}
build arm
build arm64