移植ffmpeg到Android

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

 

完整移植源码请访问:https://github.com/iappr/android-ffmpeg-x264-faac

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值