【Android音视频】Win10环境编译FFmpeg

857 阅读1分钟

工具下载

1.Android NDK下载:developer.android.google.cn/ndk/downloa…
2.ffmpeg下载:ffmpeg.org/download.ht…
3.安装msys2,下载地址:www.msys2.org/

ps:本文使用版本ffmpeg-4.2.2 ndk-r20b

编译环境配置

1.ffmpeg configure配置

修改ffmpeg-4.2.2根目录下configure脚本,使用Notepad++编辑器打开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
"

修改编译工具路径设置,搜索 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}"
pkg_config_default="${cross_prefix}${pkg_config_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}"
pkg_config_default="${cross_prefix}${pkg_config_default}"

修改这两处即可,详细描述参考作者“开发的猫”的文章:juejin.cn/post/684490…

2.编译工具配置

在msy2命令窗口执行命令: pacman -S make yasm diffutils pkg-config 下载相关工具

编写脚本

编写编译脚本,命名为build_android_clang.sh保存到ffmpge-4.2.2根目录

#!/bin/bash
set -x
# 目标Android版本
API=21
CPU=armv7-a
#so库输出目录
OUTPUT=/Users/cxp/Desktop/FFmpeg/ffmpeg-4.2.2/android/$CPU
# NDK的路径,根据自己的NDK位置进行设置
NDK=/Users/cxp/Desktop/FFmpeg/android-ndk-r20b
# 编译工具链路径
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

执行脚本

1.在msys2命令窗口cd到ffmpeg-4.2.2文件夹根目录
2.输入命令 ./build_android_clang.sh

编译成功,生成so库

参考文章

juejin.cn/post/684490…
blog.csdn.net/listener51/…