MAC下使用ndk编译ffmpeg

来源:互联网 发布:淘宝商城cma检测 编辑:程序博客网 时间:2024/05/22 12:58

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库了。

这里写图片描述

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