- 先到官网下载最新版(我用的是3.3.4)并解压
有时候编译还需要yasm,因此可以先通过homebrew 安装yasm
brew install yasm
- 因为是在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
然后就可以愉快的按下enter键,会在我们指定好的文件夹下生产对应的文件。
注意生成的so文件必须是以.so结尾,不然肯定是编译出问题了,而AS也是靠.so的后缀来识别是so文件的。
参考自:
在Mac下编译 FFmpeg
FFMPEG学习第一篇--android studio 2.3 Cmake 编译并使用ffmpeg的动态so库
感谢~
网友评论