王尘宇王尘宇

研究百度干SEO做推广变成一个被互联网搞的人

Android FFMPEG Mac编译教程

FFMPEG文件.jpg

2、修改configure文件

Sublime打开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)'

注意别换错位置,我就是这段代码替换了错误的位置坑了好久

3、在ffmpeg根目录下新建androidBuilder.sh脚本

写入:

#!/bin/bash
# 修改为自己NDK包根目录
export NDK_HOME=/Users/parker/Library/Android/sdk/ndk/android-ndk-r15c
#根据自己的需求修改编译平台版本
export PLATFORM_VERSION=android-21
#定义编译方法
function build
{
    #echo 输出命令
    echo "start build ffmpeg for $ARCH"
    #调用configure命令开始编译,并传入对应的参数
    ./configure --target-os=linux \
    --prefix=$PREFIX --arch=$ARCH \
    --disable-doc \
    --disable-static \
    --disable-yasm \
    --disable-asm \
    --disable-symver \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-ffserver \
    --cross-prefix=$CROSS_COMPILE \
    --enable-cross-compile \
    --enable-shared \
    --enable-gpl \
    --sysroot=$SYSROOT \
    --enable-small \
    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
    make clean
    make
    make install
    echo "build ffmpeg for $ARCH finished"
}

#编译 arm-v7a
PLATFORM_VERSION=android-21
ARCH=arm
CPU=armeabi-v7a #CPU架构
PREFIX=$(pwd)/android_all/$CPU  #输出路径:当前目录/android_all/CPU架构/
TOOLCHAIN=$NDK_HOME/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi- #交叉编译环境路径
ADDI_CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -mfpu=neon"
ADDI_LDFLAGS="-march=armv7-a -Wl,--fix-cortex-a8"
SYSROOT=$NDK_HOME/platforms/$PLATFORM_VERSION/arch-$ARCH/
build

保存。

4、打开终端,把androidBuilder.sh拖进去,Enter。

编译的过程当中会申请很多的权限,一路允许就好。
部分权限需要手动去 偏好设置->安全与隐私 手动授权。
编译过程大概五到十分钟。
编译完成之后,在ffmpeg目录下会出现新的文件夹android_all.如图:

编译完成之后的android_all文件夹.png

armeabi-v7a目录下的include和lib就是我们引入Android需要使用的头文件和动态链接库。

到此FFMPEG编译结束。

备注

如果在整个过程中出现错误,排查顺序:
如果FFMPEG源码编译失败:

1、检查自己的NDK版本号和FFMPEG源码是否对应;
2、检查androidBuilder.sh中是否正确替换了自己的sdk地址。
3、检查FFMPEG根目录下的configure文件中的代码更换位置是否正确。

后续会写FFPEG for Android使用教程。

祝各位同僚一切顺利!

相关文章

评论列表

发表评论:
验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。