花了一整天的时间,终于编译通过了。 最大的问题,就是ndk的版本和ffmpeg的版本要对应上,尝试过master,release/3.4, release/3.3, release/3.2, release/3.1,ndk-bundle, ndk-r10e各种交配,错误也是各种样式。不要去关注,stdlib.h找不到,文件not executable,macro找不到,和你没关系。
- ffmpeg的下载
github.com/FFmpeg/FFmp…
下载好版本切到release/3.1 - 修改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)'
复制代码
-
下载ndk-r10e
stackoverflow.com/questions/6… -
在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
复制代码
- 运行./build_android.sh,
可能需要权限chmod 777 build_android.sh - so会在ffmpeg目录下生成,位于android/arm/*