Mac 10.15.4下面使用Android ndk-16编译ffmpeg3.4.7

最近几天想要编译ffmpeg,就是下载了最新的版本的ffmpeg4.2,结果就是无论怎么配置都是各种错误,状况百出,后来去下载了ffmpeg3.4.7,一下子就编译成功,下面在这里记录一下:

准备环境:下载ndk-16,下载ffmpeg

使用brew安装如下的文件:

brew install automake    brew install celt    brew install faac

brew install fdk-aac        brew install lame   brew install  libass

brew install libtool          brew install libvorbis  brew install libvpx

brew install aacenc          brew install opencore-amr  brew install openjpeg

brew install opus         brew install sdl    brew install schroedinger

brew install shtool         brew install speex    brew install texi2html

brew install theora         brew install wget    brew install x264

brew install xvid         brew install yasm

最重要的是安装libaacplus,这个要使用wget命令安装

wget http://tipok.org.ua/downloads/media/aacplus/libaacplus/libaacplus-2.0.2.tar.gz

tar -xzf libaacplus-2.0.2.tar.gz

cd libaacplus-2.0.2

 ./autogen.sh --enable-shared --enable-static

 make

 sudo make install

sudo ldconfig

 

接下来就是在ffmpeg里面修改confiure文件里面的这四行:

SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
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_VERSION='$(SLIBNAME).$(LIBVERSION)'
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文件

然后编写build_android.sh文件,代码如下:

#!/bin/bash
ADDI_CFLAGS="-marm"
API=27
PLATFORM=arm-linux-androideabi
CPU=armv7-a
NDK=/Users/xx/android-ndk-r16b
SYSROOT=$NDK/platforms/android-$API/arch-arm/
ISYSROOT=$NDK/sysroot
ASM=$ISYSROOT/usr/include/$PLATFORM
TOOLCHAIN=$NDK/toolchains/$PLATFORM-4.9/prebuilt/darwin-x86_64
OUTPUT=/Users/xx/ffmpeg-3.4.7/android
function build_one
{
./configure \
--prefix=$OUTPUT \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-I$ASM -isysroot $ISYSROOT -Os -fpic -marm" \
--extra-ldflags="-marm" \
$ADDITIONAL_CONFIGURE_FLAG
  make clean
  #make -j4 
  make
  make install
}

build_one
 

如果执行时报出arm-linux-androideabi-clang No such directory的错误,请切换目录到ndk/build/tools下,执行

./make_standalone_toolchain.py --arch arm --api 21 --install-dir /Users/xx/tmp/my-android-toolchain

将生成的arm-linux-androideabi-clang 和clang50文件拷贝过去即可解决问题

在/Users/xx/ffmpeg-3.4.7/android下面就可以找到编译好的so文件和include文件了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值