MAC下使用ndk编译ffmpeg

本文介绍如何将FFmpeg编译成适用于Android平台的.so动态链接库,并提供了详细的步骤指导,包括配置文件修改及编译脚本示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

这里写图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值