注:视频:https://download.csdn.net/download/long_24k_os/10453389
1、点击官网(https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip)下载,解压到当前用户目录。
2、到官网http://www.ffmpeg.org/download.html 复制 git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg后到ubuntu打开命令行粘贴,按回车键之后就在当前用户目录下产生ffmpeg文件夹。
3、在android-ndk-r16b/build/tools目录下执行命令:
python3 make_standalone_toolchain.py --arch arm --stl=libc++ --install-dir /home/你Ubuntu的用户名/my_toolchains/arm --force
python3 make_standalone_toolchain.py --arch arm64 --stl=libc++ --install-dir /home/你Ubuntu的用户名/my_toolchains/arm64 --force
python3 make_standalone_toolchain.py --arch x86 --stl=libc++ --install-dir /home/你Ubuntu的用户名/my_toolchains/x86 --force
python3 make_standalone_toolchain.py --arch x86_64 --stl=libc++ --install-dir /home/你Ubuntu的用户名/my_toolchains/x86_64 --force
注意:这里我的Ubuntu用户名longwei , 从这里 可以看到 @前面点击用户名,@后面是实例名
执行完命令后的目录:
4、然后复制build_all.sh、build_arm64-v8a.sh、build_armeabi-v7a.sh、build_armeabi.sh、build_x86.sh、build_x86_64.sh六个文件到ffmpeg目录下,再用管理员(su)给755权限:
build_all.sh
#!/bin/bash
./build_armeabi.sh
./build_armeabi-v7a.sh
./build_arm64-v8a.sh
./build_x86.sh
./build_x86_64.sh
build_arm64-v8a.sh
#!/bin/bash
TOOLCHAIN=/home/longwei/my_toolchains/arm64
CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-
rm -f $(pwd)/compat/strtod.o
function build_one
{
./configure --prefix=$PREFIX --enable-shared --disable-static --enable-protocol=file --enable-pic --enable-small --disable-programs --disable-doc --disable-symver --target-os=android --enable-cross-compile --cross-prefix=$CROSS_PREFIX --extra-cflags="-Os -fpic $ADDI_CFLAGS" --extra-ldflags="$ADDI_LDFLAGS" --sysroot=$TOOLCHAIN/sysroot $ADDITIONAL_CONFIG_FLAG
make clean
make -j2
make install
}
CPU=arm64-v8a
mkdir -p $(pwd)/android/$CPU
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-march=armv8-a"
ADDI_LDFLAGS="-L$TOOLCHAIN/sysroot/usr/lib"
ADDITIONAL_CONFIG_FLAG="--arch=aarch64 --enable-yasm"
build_one
build_armeabi.sh
#!/bin/bash
TOOLCHAIN=/home/longwei/my_toolchains/arm
CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-
rm -f $(pwd)/compat/strtod.o
function build_one
{
./configure --prefix=$PREFIX --enable-shared --disable-static --enable-protocol=file --enable-pic --enable-small --disable-doc --disable-programs --disable-symver --target-os=android --enable-cross-compile --cross-prefix=$CROSS_PREFIX --extra-cflags="-Os -fpic $ADDI_CFLAGS" --extra-ldflags="$ADDI_LDFLAGS" --sysroot=$TOOLCHAIN/sysroot $ADDITIONAL_CONFIG_FLAG
make clean
make -j2
make install
}
CPU=armeabi
mkdir -p $(pwd)/android/$CPU
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm -march=armv5te -mtune=arm9tdmi -msoft-float"
ADDI_LDFLAGS=""
ADDITIONAL_CONFIG_FLAG="--arch=arm --cpu=armv5te --enable-armv5te --disable-asm --disable-stripping"
build_one
build_armeabi-v7a.sh
#!/bin/bash
TOOLCHAIN=/home/longwei/my_toolchains/arm
CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-
rm -f $(pwd)/compat/strtod.o
function build_one
{
./configure --prefix=$PREFIX --enable-shared --disable-static --enable-protocol=file --enable-pic --enable-small --disable-programs --disable-doc --disable-symver --target-os=android --enable-cross-compile --cross-prefix=$CROSS_PREFIX --extra-cflags="-Os -fpic $ADDI_CFLAGS" --extra-ldflags="$ADDI_LDFLAGS" --sysroot=$TOOLCHAIN/sysroot $ADDITIONAL_CONFIG_FLAG
make clean
make -j2
make install
}
CPU=armeabi-v7a
mkdir -p $(pwd)/android/$CPU
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm -march=armv7-a -mfloat-abi=softfp -mthumb -mfpu=vfpv3-d16 -mtune=cortex-a8"
ADDI_LDFLAGS="-marm -march=armv7-a -Wl,--fix-cortex-a8"
ADDITIONAL_CONFIG_FLAG="--arch=arm --disable-asm"
build_one
build_x86.sh
#!/bin/bash
TOOLCHAIN=/home/longwei/my_toolchains/x86
CROSS_PREFIX=$TOOLCHAIN/bin/i686-linux-android-
rm -f $(pwd)/compat/strtod.o
function build_one
{
./configure --prefix=$PREFIX --enable-shared --disable-static --enable-protocol=file --enable-pic --enable-small --disable-programs --disable-doc --disable-symver --target-os=android --enable-cross-compile --cross-prefix=$CROSS_PREFIX --extra-cflags="-Os -fpic $ADDI_CFLAGS" --extra-ldflags="$ADDI_LDFLAGS" --sysroot=$TOOLCHAIN/sysroot $ADDITIONAL_CONFIG_FLAG
make clean
make -j2
make install
}
CPU=x86
mkdir -p $(pwd)/android/$CPU
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32"
ADDI_LDFLAGS=""
ADDITIONAL_CONFIG_FLAG="--arch=x86 --cpu=i686 --enable-x86asm"
build_one
build_x86_64.sh:
#!/bin/bash
TOOLCHAIN=/home/longwei/my_toolchains/x86_64
CROSS_PREFIX=$TOOLCHAIN/bin/x86_64-linux-android-
rm -f $(pwd)/compat/strtod.o
function build_one
{
./configure --prefix=$PREFIX --enable-shared --disable-static --enable-protocol=file --enable-pic --enable-small --disable-programs --disable-doc --disable-symver --target-os=android --enable-cross-compile --cross-prefix=$CROSS_PREFIX --extra-cflags="-Os -fpic $ADDI_CFLAGS" --extra-ldflags="$ADDI_LDFLAGS" --sysroot=$TOOLCHAIN/sysroot $ADDITIONAL_CONFIG_FLAG
make clean
make -j2
make install
}
CPU=x86_64
mkdir -p $(pwd)/android/$CPU
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-march=x86-64"
ADDI_LDFLAGS=""
ADDITIONAL_CONFIG_FLAG="--arch=x86_64 --enable-x86asm"
build_one
chmod 755 build_all.sh build_arm64-v8a.sh build_armeabi-v7a.sh build_armeabi.sh build_x86.sh build_x86_64.sh
进行编译:./build_all.sh
编译执行中。。。。
编译完成:
5、编译完成的andoird目录结构: