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

 

 

  

posted on 2021-01-27 01:25  JacobChen2012  阅读(502)  评论(0编辑  收藏  举报

导航