编译Android平台使用的FFmpeg库

本文详细介绍了如何在Mac OS环境下,使用NDK-r10e和FFmpeg 3.3.3编译FFmpeg库,包括修改configure文件,编写脚本文件,将编译结果打包成一个.so文件,并在Android平台上测试使用的过程。文章还提到了编译过程中遇到的问题及解决方法,以及如何通过JNI调用FFmpeg命令行功能。

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

目录

  • 编译生成多个.so
  • 打包成一个.so
  • 在安卓上测试使用

编译FFmpeg

-编译环境:

Mac OS
NDK-r10e
FFmpeg 3.3.3

-编译过程
-修改configure文件

下载FFmpeg源代码之后,首先需要对源代码中的configure文件进行修改。由于编译出来的动态库文件名的版本号在.so之后(例如“libavcodec.so.5.100.1”),而android平台不能识别这样文件名,所以需要修改这种文件名。

找到 ffmpeg-3.3/configure 文件,找到以下几行:

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)'
-编写脚本文件

新建脚本文件 ffmpeg-3.3/build_android.sh,保存下面脚本。

需要注意的是,这个脚本文件最好不要用记事本去创建改文件后缀的方式,记事本会添加一些奇怪的结束符(Line ending),我是直接拷贝ffmpeg解压后文件夹里的version.sh改的build_android.sh

#!/bin/bash

# NDK的路径,根据自己的安装位置进行设置
NDK=~/Library/Android/sdk/ndk-bundle

# 编译针对的平台,可以根据自己的需求进行设置
# 这里选择最低支持android-14, arm架构,生成的so库是放在
# libs/armeabi文件夹下的,若针对x86架构,要选择arch-x86
PLATFORM=$NDK/platforms/android-14/arch-arm


# 工具链的路径,根据编译的平台不同而不同
# arm-linux-androideabi-4.9与上面设置的PLATFORM对应,4.9为工具的版本号,
# 根据自己安装的NDK版本来确定,一般使用最新的版本
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64

ARCH=arm
TARGETOS=android
PREFIX=$(pwd)/$TARGETOS/$ARCH
PREFIX1=$(pwd)
ADDITIONAL_CONFIGURE_FLAG=

./configure \
    --prefix=$PREFIX \
    --enable-shared \
    --disable-static \
    --disable-doc \
    --disable-programs \
    -<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值