Mac OS 环境下编译ffmpeg生成so库文件

编译环境:

  • Mac OS monterey (12.3.1)
  • android-ndk (21.0.6113669)
  • ffmpeg-4.2.2

下载ffmpeg:wget https://ffmpeg.org/releases/ffmpeg-4.2.2.tar.bz2 ,或者到官方git上下载。

注意:ndk版本我使用的是21.0.6113669,试过24.0.8215888的版本,缺少某些文件会导致编译失败。应该大版本是21的都可以,具体什么原因还没验证。

注意:Android 的 NDK 在 r17c 以后,Google正式移除 GCC ,不再支持 GCC ,新版本的 NDK 都是使用 CLANG 进行编译。所以我们这里使用CLANG进行编译。

一、 configure 脚本
新增 cross_prefix_clang 参数
打开(注:不是双击运行)ffmpeg-4.2.2 根目录下的 configure 文件,搜索 CMDLINE_SET ,可以找到以下代码,然后新增一个命令行选项:cross_prefix_clang


CMDLINE_SET="
    $PATHS_LIST
    ar
    arch
    as
    assert_level
    build_suffix
    cc
    objcc
    cpu
    cross_prefix
    # 新增命令行参数
    cross_prefix_clang
    custom_allocator
    cxx
    dep_cc
    doxygen
    env
    extra_version
    .
    .
    .

2.修改编译工具路径设置,

搜索ar_default="${cross_prefix}${ar_default}"

ar_default="${cross_prefix}${ar_default}"
cc_default="${cross_prefix}${cc_default}"
cxx_default="${cross_prefix}${cxx_default}"
nm_default="${cross_prefix}${nm_default}"

将中间两行改成

ar_default="${cross_prefix}${ar_default}"
cc_default="${cross_prefix_clang}${cc_default}"
cxx_default="${cross_prefix_clang}${cxx_default}"
nm_default="${cross_prefix}${nm_default}"

新建编译配置脚本

在根目录下新建 shell 脚本,命名为: build_android_clang.sh

#!/bin/bash
set -x
# 目标Android版本
API=24
CPU=armv7-a
#so库输出目录,自己喜欢放哪里就放哪里
# OUTPUT=$(pwd)/android/$CPU
OUTPUT=./output/$CPU
# NDK的路径,根据自己的NDK位置进行设置
NDK=/Users/kbq/Library/Android/sdk/ndk/21.0.6113669
# 编译工具链路径
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/darwin-x86_64
# 编译环境
SYSROOT=$TOOLCHAIN/sysroot
 
function build
{
  ./configure \
  --prefix=$OUTPUT \
  --target-os=android \
  --arch=arm \
  --cpu=armv7-a \
  --enable-asm \
  --enable-neon \
  --enable-cross-compile \
  --enable-shared \
  --disable-static \
  --disable-doc \
  --disable-ffplay \
  --disable-ffprobe \
  --disable-symver \
  --disable-ffmpeg \
  --sysroot=$SYSROOT \
  --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
  --cross-prefix-clang=$TOOLCHAIN/bin/armv7a-linux-androideabi$API- \
  --extra-cflags="-fPIC"
 
  make clean all
  # 这里是定义用几个CPU编译
  make -j12
  make install
  
}

build

第三步启动编译

打开cmd终端,cd 到 FFmpeg 所在目录

输入 ./build_android_clang.sh

等待编译完成,将会在 ffmpeg/android/armv7-a目录下得到 include 和 lib 两个目录,分别是 头文件 和 so库文

注意:如果出现 zsh: permission denied: ./build_android_clang.sh 的错误提示,就是文件权限不对,执行 chmod u+x build_android_clang.sh

猜你喜欢

转载自blog.csdn.net/u010926168/article/details/124521078
今日推荐