MAC下编译FFmpeg3.1.11

这两天在尝试用mac编译FFmpeg,因此顺手将过程记录一下。本文参考 《Android音视频开发》一书。

首先在官网下载FFmpeg3.1.11的安装包以及NDK安装包(android-ndk-r10e-darwin-x86_64.zip)解压两个安装包

启动终端terminal

进入当前用户的home目录(/Users/YourUserName)

创建.bash_profile文件(如果不存在的话)touch .bash_profile

编辑.bash_profile文件 open -e .bash_profile 

配置NDK开发环境如下图

在自己机器上更改相应的路径就可以

保存文件并关闭

更新刚配置的环境变量 执行  source .bash_profile

输入$PATH来确认是否编辑成功

配置成功后进入终端NDK下的samples目录

输入 cd hello-jni/ 命令,然后执行ndk-build命令

出现下图表示配置成功

下面就可以开始编译FFmpeg

编译前修改FFmpeg源码的configure文件,因为编译出来的动态库文件名的版本号在.so之后

Android平台无法识别,所以要修改下

大概在3209行左右,找到这几行代码

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)'

接下来编写一个shell脚本,进入FFmpeg目录下,创建build_android.sh文件,编辑内容如下

#!/bin/sh
NDK=/Users/linhongyu/Documents/AndroidProject/android-ndk-r10e
SYSROOT=$NDK/platforms/android-21/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
CPU=arm
PREFIX=$(pwd)/android/$CPU/
ADDI_CFLAGS="-marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--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

读者自行修改前几行代码对应自己机器上的环境

记得将将build_android.sh权限修改为可执行   chmod +x build_android.sh

在终端输入 ./build_android.sh 开始运行这个脚本

等待10分钟左右,编译完成后 FFmpeg目录下将会多出一个android目录,其中就包含我们所需要的.so库。

 

你可能感兴趣的:(MAC下编译FFmpeg3.1.11)