最新版ffmpeg(4.2.2)编译脚本

  1. 使用macos的命令行运行
  2. 直接运行编译出的是armv7-a架构的
  3. 如需要armv8(aarch64)的需要 修改PLATFORM和ANDROID_CROSS_PREFIX以及ARCH三项

根据自己的要求变更PREFIX,这个为编译后文件输出目录

#!/bin/bash

#Android System API Level,你要运行在什么系统上,就填写系统API Level
#但是这个API Level必须要能够在NDK中找得到,详见下面的ANDROID_CROSS_PREFIX
API_LEVEL=21

#设置ndk目录
NDK=/Users/zhaowenxiao/Library/Android/sdk/ndk/21.0.6113669

#llvm toolchain路径。linux下是linux-x86_64,windows下则是windows开头的。
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/darwin-x86_64

#sysroot 这个一定要设置成 ndk的llvm 路径下的 sysroot 
#这里有个坑要注意,sysroot文件夹在r19c后才存在,r18b中是没有的!
SYSROOT=$TOOLCHAIN/sysroot

#ar nm 的prefix。这里一定要保证和编译的系统位数保持一致
# for aarch64
#PLATFORM=aarch64-linux-android
# for armv7
PLATFORM=arm-linux-androideabi

#ASM 路径, 同上必须是llvm 目录下的 asm
#说实话,我不知道为啥要ASM。。
ASM=$SYSROOT/usr/include/$PLATFORM

#完整的 cross prefix
CROSS_PREFIX=$TOOLCHAIN/bin/$PLATFORM-

#专门给ndk clang/clang++ 的 cross prefix
# for aarch64
#ANDROID_CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android$API_LEVEL-
# for armv7
ANDROID_CROSS_PREFIX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API_LEVEL-

#临时文件目录
TMPDIR=../temp

#CPU架构
#64位arm:aarch64
#32位arm:armv7-a
#64位intel/amd:x86_64
#32位intel/amd:x86
ARCH=armv7-a

#操作系统
OS=android

#安装位置
PREFIX=~/ffmpeg_out/android/$ARCH

#额外C参数
ADDI_CFLAGS=""

#这里面不能写注释,否则会报错
./configure \
--prefix=$PREFIX \
--enable-cross-compile \
--cross-prefix=$CROSS_PREFIX \
--target-os=$OS \
--arch=$ARCH \
--pkg-config=$(which pkg-config) \
--cc=${ANDROID_CROSS_PREFIX}clang \
--cxx=${ANDROID_CROSS_PREFIX}clang++ \
--disable-asm \
--disable-x86asm \
--disable-stripping \
--sysroot=$SYSROOT \
--fatal-warnings \
--enable-gpl \
--enable-version3 \
--enable-nonfree \
--disable-ffplay \
--disable-ffprobe \
--enable-pic \
--enable-jni \
--enable-shared \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--enable-decoder=hevc_mediacodec \
--enable-decoder=mpeg4_mediacodec \
--enable-decoder=vp8_mediacodec \
--enable-decoder=vp9_mediacodec \
--enable-encoder=aac \
--enable-decoder=aac \
--enable-decoder=aac_latm \
--extra-cflags="-Os -fpic -I$ASM -isysroot $SYSROOT" \
--extra-ldflags="$ADDI_LDFLAGS"
make clean
make -j 4
make install

你可能感兴趣的:(解决问题)