1.首先从Android developer网站下载NDK,我用的android-ndk-r8e(Linux系统)版本
2.下载ffmpeg x264 faac这些开源库
3.由于这些开源项目都是跨平台的,所以移植只要执行配置脚本,然后执行make就可以了
4.下面贴出编译脚本:
编译x264:
NDK=/home/dzhao2x/android-ndk-r8e | |
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt | |
PLATFORM=$NDK/platforms/android-8/arch-arm | |
PREFIX=/home/dzhao2x/android-ffmpeg-x264-faac-latest/output | |
./configure --prefix=$PREFIX \ | |
--enable-static \ | |
--enable-pic \ | |
--disable-asm \ | |
--disable-cli \ | |
--host=arm-linux \ | |
--cross-prefix=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi- \ | |
--sysroot=$PLATFORM | |
make | |
make install |
编译faac:
~/android-ndk-r8e/build/tools/make-standalone-toolchain.sh --install-dir=./toolchain --system=linux-x86_64
#!/bin/bash | |
# Set NDK to the full path to your NDK install | |
NDK="/home/dzhao2x/android-ndk-r8e" | |
DIR="/home/dzhao2x/android-ffmpeg-x264-faac-latest/" | |
export PATH=$PATH:$NDK:$DIR/toolchain/bin | |
ANDROID_CFLAGS="-DANDROID -D__ARM_ARCH_7__ -D__ARM_ARCH_7A__ -ffunction-sections -funwind-tables -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -Wa,--noexecstack -Os " | |
ANDROID_CXXFLAGS="-DANDROID -D__ARM_ARCH_7__ -D__ARM_ARCH_7A__ -ffunction-sections -funwind-tables -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fno-exceptions -fno-rtti -mthumb -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -Wa,--noexecstack -Os " | |
PREFIX=arm-linux-androideabi- | |
export AR=${PREFIX}ar | |
export AS=${PREFIX}gcc | |
export CC=${PREFIX}gcc | |
export CXX=${PREFIX}g++ | |
export LD=${PREFIX}ld | |
export NM=${PREFIX}nm | |
export RANLIB=${PREFIX}ranlib | |
export STRIP=${PREFIX}strip | |
export CFLAGS=${ANDROID_CFLAGS} | |
export CXXFLAGS=${ANDROID_CXXFLAGS} | |
export CPPFLAGS=${ANDROID_CPPFLAGS} | |
config_clean() | |
{ | |
make distclean &>/dev/null | |
rm config.cache &>/dev/null | |
rm config.log &>/dev/null | |
} | |
config_faac() | |
{ | |
echo -e "Configuring FAAC" | |
config_clean | |
./configure --host=arm-linux \ | |
--prefix=/home/dzhao2x/android-ffmpeg-x264-faac-latest/output \ | |
--disable-dependency-tracking \ | |
--disable-shared \ | |
--enable-static \ | |
--with-pic \ | |
--without-mp4v2 | |
} | |
compile_faac() | |
{ | |
echo -e "Compiling FAAC" | |
make clean | |
make install | |
cp -v libfaac/.libs/libfaac.a ../ffmpeg | |
} | |
config_faac | |
compile_faac |
编译ffmpeg:
#!/bin/bash | |
NDK=/home/dzhao2x/android-ndk-r8e | |
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt | |
PLATFORM=$NDK/platforms/android-8/arch-arm | |
PREFIX=/home/dzhao2x/android-ffmpeg-x264-faac-latest/output | |
./configure --target-os=linux \ | |
--prefix=$PREFIX \ | |
--enable-cross-compile \ | |
--enable-runtime-cpudetect \ | |
--disable-asm \ | |
--arch=arm \ | |
--cc=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-gcc \ | |
--cross-prefix=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi- \ | |
--disable-stripping \ | |
--nm=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-nm \ | |
--sysroot=$PLATFORM \ | |
--enable-nonfree \ | |
--enable-version3 \ | |
--disable-everything \ | |
--enable-gpl \ | |
--disable-doc \ | |
--enable-avresample \ | |
--enable-demuxer=rtsp \ | |
--enable-muxer=rtsp \ | |
--disable-ffplay \ | |
--disable-ffserver \ | |
--enable-ffmpeg \ | |
--disable-ffprobe \ | |
--enable-libx264 \ | |
--enable-encoder=libx264 \ | |
--enable-decoder=h264 \ | |
--enable-libfaac \ | |
--enable-encoder=libfaac \ | |
--enable-decoder=acc \ | |
--enable-protocol=rtp \ | |
--enable-hwaccels \ | |
--enable-zlib \ | |
--disable-devices \ | |
--disable-avdevice \ | |
--extra-cflags="-I$PREFIX/include -fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=armv7-a" \ | |
--extra-ldflags="-L$PREFIX/lib" | |
make clean | |
make -j4 install | |
$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o |