MAC下使用ndk编译ffmpeg

ffmpeg是c语言的库,主要作用是对音视频进行编解码等操作。是android进阶必须要掌握的一门技术。通过使用ffmpeg可以提高对android ndk的认识和熟练度。第一步当然就是编译ffmpeg编译为android可以使用的.so文件。
第一步:下载ffmpeg
第二步:修改config文件,这个文件在下载的ffmpeg文件下。
将以下内容

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_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'  
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'  
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'  
SLIB_INSTALL_LINKS='$(SLIBNAME)'  

替换的原因是编译后的文件会在.so后面追加动态库的版本号,而这样的文件android是不能识别的。
第三步:下载好ndk,本次编译时基于ffmpeg-3.1.1 ndk-r10e的版本。
第四步:配置.sh脚本文件,以下亲测可以编译成功。

 #!/bin/bash
      #ndk路径
      NDK=/Users/zhoukai/Documents/android-ndk-r10e
      #版本号
      SYSROOT=$NDK/platforms/android-9/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

等待…
最后在ffmpeg文件下回有一个android文件夹,android中有一个include文件夹里面存放的是头文件,lib下存放的就是所需要的.so库了。

这里写图片描述

最后感谢各路网站资料的支持!

猜你喜欢

转载自blog.csdn.net/ZACH_ZHOU/article/details/78855938