Mac下编译安卓用的FFmpeg

  1. 先到官网下载最新版(我用的是3.3.4)并解压
    有时候编译还需要yasm,因此可以先通过homebrew 安装yasm
brew install yasm

  1. 因为是在Mac下编译,而且是给安卓用的,需要改几个参数。
    根目录下找到configure文件,用编辑器打开(比如sublime)
    找到如下的代码块,大概在3304行:
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'

改成如下
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' SLIB_INSTALL_LINKS='$(SLIBNAME)'

然后在终端上cd 进入解压的ffmpeg文件夹根目录
输入
sh build.sh

先别按enter键,这个时候,你可能发现, build.sh还没创建
别担心,咱创建一下,文件内容如下,请根据注释修改:
#!/bin/bash #换成自己的NDK地址 NDK=/Users/apple/Documents/Android/NDK/android-ndk-r14b #换成自己要指定的API版本,这里是min_sdk为16 编译arm架构的意思 SYSROOT=$NDK/platforms/android-16/arch-arm/ #目标机器架构平台对应的工具链,我们是arm就选arm TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64 # 目标机器架构平台 CPU=armv7-a #输出路径 换成自己的,真实存在的路径,真实存在,重要的事情说两遍 PREFIX=/Users/apple/Documents/ffmpeg/output ADDI_CFLAGS="-marm" function build_one { ./configure \ --prefix=$PREFIX \ --enable-shared \ --enable-gpl \ --disable-static \ --disable-doc \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-ffserver \ --disable-doc \ --disable-symver \ --enable-small \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --target-os=linux \ --arch=arm \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $ADDI_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG make clean make make install } build_one

【Mac下编译安卓用的FFmpeg】然后就可以愉快的按下enter键,会在我们指定好的文件夹下生产对应的文件。
注意生成的so文件必须是以.so结尾,不然肯定是编译出问题了,而AS也是靠.so的后缀来识别是so文件的。
参考自:
在Mac下编译 FFmpeg
FFMPEG学习第一篇--android studio 2.3 Cmake 编译并使用ffmpeg的动态so库
感谢~

    推荐阅读