mac上编译Android的arm64位ffmpeg

在涉及对视频进行操作的场景,ffmpeg可以很好地满足一些需求,下面以arm64的Android系统为例,记录ffmpeg编译的实现。

一、下载源码

    可以通过git的方式获取源码,这里直接从ffmpeg.org下载到4.3.1的tar包

二、配置和编译

  ffmpeg的编译方式跟其他unix*开源工具类似,先configure再make即可。但这里我们是要在mac上编译用于Android的二进制文件,所以需要使用交叉编译工具链。

  1. 引用Android ndk编译,这里使用的是ndk r21版本,亲测可用

NDK=$ANDROID_NDK_HOME

  2. 指定需要用到的toolchain和sysroot路径

TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/darwin-x86_64
SYSROOT=$NDK/toolchains/llvm/prebuilt/darwin-x86_64/sysroot
CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang # c compiler path
CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++ # c++ compiler path

  3. 根据实际需求打开或关闭ffmpeg的feature,这些可以从configure中获得

./configure --enabe-* --disable-*
make
make install

  4. 最后放出完整脚本

#!/bin/bash
NDK=$ANDROID_NDK_HOME

ARCH=aarch64
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/darwin-x86_64
SYSROOT=$NDK/toolchains/llvm/prebuilt/darwin-x86_64/sysroot
ROOT_FOLDER=$PWD/..
OUTPUT=$ROOT_FOLDER/output/android/ffmpeg/arm64
CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang # c compiler path
CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++ # c++ compiler path

ADDI_CFLAGS="-fPIE -pie -mfloat-abi=softfp -mfpu=neon"
ADDI_LDFLAGS="-fPIE -pie"

echo "sysroot:$SYSROOT"
echo "output:$OUTPUT"
echo "arch:$ARCH"
echo "CC:$CC"
echo "CXX:$CXX"

./configure 
    --disable-shared 
    --enable-static 
    --disable-stripping 
    --enable-debug 
    --prefix=$OUTPUT 
    --toolchain=clang-usan 
    --enable-cross-compile 
    --target-os=linux 
    --arch=$ARCH 
    --sysroot=$SYSROOT 
    --cc=$CC 
    --cxx=$CXX 
    --cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android- 
    --extra-cflags="$ADDI_CFLAGS" 
    --extra-ldflags="$ADDI_LDFLAGS" 
    --extra-libs=-ldl 
    --disable-avdevice 
    --disable-ffplay 
    --disable-network 
    --disable-doc 
    --disable-symver 
    --disable-ffprobe 
    --disable-opencl 
    --enable-neon 
    --enable-gpl 
    --enable-pthreads 
    --enable-encoder=aac 
    --enable-encoder=gif 
    --enable-encoder=mpeg4 
    --enable-encoder=yuv4 
    --enable-decoder=h264 
    --enable-bsf=h264_mp4toannexb 
    --enable-bsf=hevc_mp4toannexb 
    --enable-bsf=mpeg4_unpack_bframes
    
rm -rf $OUTPUT
make clean
make -j9
make install

  

原文地址:https://www.cnblogs.com/jacobchen/p/14333172.html