音视频开发中要用到的,之前修改编译没问题,现在记录下,方便下次使用

可编译 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

  1. 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