Mac下如何编译 FFmpeg的SO库,为Android使用

花了一整天的时间,终于编译通过了。 最大的问题,就是ndk的版本和ffmpeg的版本要对应上,尝试过master,release/3.4, release/3.3, release/3.2, release/3.1,ndk-bundle, ndk-r10e各种交配,错误也是各种样式。不要去关注,stdlib.h找不到,文件not executable,macro找不到,和你没关系。

  1. ffmpeg的下载
    github.com/FFmpeg/FFmp…
    下载好版本切到release/3.1
  2. 修改configure文件
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)'

复制代码
  1. 下载ndk-r10e
    stackoverflow.com/questions/6…

  2. 在ffmpeg目录下编写编译脚本文件build_android.sh

#!/bin/bash
NDK=/Users/yangjing/Library/android-ndk-r10e
SYSROOT=$NDK/platforms/android-21/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 \
--disable-ffserver \
--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
make
make install
复制代码
  1. 运行./build_android.sh,
    可能需要权限chmod 777 build_android.sh
  2. so会在ffmpeg目录下生成,位于android/arm/*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值