2018-09-29 Mac 下使用NDK进行FFmpeg编译源

2018-09-29  本文已影响65人  馒Care

以下只针对Mac版本下进行FFmpeg版本的编译,移植到Android上
环境:Mac
工具:Mac 终端编译
源码:git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg(下载源代码后,我这里放到桌面上,命名文件ffmpeg,把当前文件复制到android-ndk-r10e根目录下,也就是android-ndk-r10e/ffmpeg)
NDK版本:android-ndk-r10e(这里可以选择自己需要的版本)

步骤:
一.首先配置NDK环境:
1.打开Mac终端编译
输入open -e .bash_profile
2.编辑.bash_profile文件
export NDK_HOME=/Users/xxx/Documents/android-ndk-r10e(这里是ndk的目录位置)
export PATH=PATH:NDK_HOME
3.保存.bash_profile文件
4.终端输入ndk-build
如果有显示,类似以下内容,表示配置成功
Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
/Users/yaganglian/Documents/android-ndk-r10e/build/core/build-local.mk:143: *** Android NDK: Aborting . Stop.

二.把我们下载好的FFmpeg源码复制到NDK根目录下
三.在FFmpeg根目录下,新建文件build-android.sh文件,复制以下内容

!/bin/bash

这里的路径需要修改为你自己的ndk路径

NDK=/Users/yaganglian/Documents/android-ndk-r10e

注意android-9文件夹的版本号,替换好自己的版本号

SYSROOT=$NDK/platforms/android-9/arch-arm/

把这里的路径替换好自己的版本

TOOLCHAIN=NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64 function build_one(){ ./configure \ --prefix=PREFIX
--enable-shared
--disable-static
--disable-doc
--enable-cross-compile
--cross-prefix=TOOLCHAIN/bin/arm-linux-androideabi- \ --target-os=linux \ --arch=arm \ --sysroot=SYSROOT
--extra-cflags="-Os -fpic ADDI_CFLAGS" \ --extra-ldflags="ADDI_LDFLAGS"
ADDITIONAL_CONFIGURE_FLAG } CPU=arm PREFIX=(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
这里注意下,新版的FFmpeg不需要再设置disable-ffmpeg-server

四.修改FFmpeg目录下configure文件
将该文件中的如下四行

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

五.以上步骤都做好后,就开始回到Mac终端,最好是重启下终端,使用cd 进入到ffmpeg文件目录下,使用以下命令
./build_android
等待一会儿,输入 make
最后输入make install 全部编译后,我们打开ffmpeg目录,会发现生成了一个文件夹,android,android/xxx/lib/下就是我们需要的so文件了。

以上就是ffmpeg在Mac下移植的过程,讲真简书我真的还用不习惯,这格式好难梳理,
有编译的疑问可以留言给我

上一篇下一篇

猜你喜欢

热点阅读