基于ndk-r21b编译ffmpeg-4.3.1

1、ffmpeg下载地址:http://ffmpeg.org/download.html,打开下载地址选择需要的平台和版本号进行下载,下载可以先下载下来,然后在上传到linux上,也可以使用以下命令,在linux上直接下载:

wget http://ffmpeg.org/releases/ffmpeg-4.3.1.tar.bz2

2、解压下载好的ffmpeg,解压命令如下:

tar xvf ffmpeg-4.3.1.tar.bz2

3、解压后会生成一个解压目录ffmpeg-4.3.1,在这个目录下创建android/armeabi-v7a文件夹用来存放编译生成的ffmpeg静态库或者动态库

4、下载并解压ndk(r21b),下载和解压命令:

wget https://dl.google.com/android/repository/android-ndk-r21b-linux-x86_64.zip

unzip android-ndk-r21b-linux-x86_64.zip

5、修改so文件的命名规则:

#将ffmpeg-4.3.1目录中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)'

6、创建一个build_android_r21b.sh文件,在文件中添加一下脚本:

#!/bin/bash

PREFIX=/usr/hui/ndk/ffmpeg-4.3.1/android/armeabi-v7a

TOOLCHAIN=/usr/hui/ndk/android-ndk-r21b/toolchains/llvm/prebuilt/linux-x86_64

build()
{
./configure \
--prefix=$PREFIX \
--disable-static \
--enable-shared \
--enable-small \
--enable-gpl \
--disable-doc \
--disable-programs \
--disable-avdevice \
--enable-cross-compile \
--target-os=android \
--arch=armeabi-v7a \
--cc=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi-

make clean
make -j4
make install
}

build

7、为build_android_r21b.sh文件设置可执行权限:

chmod +x build_android_r21b.sh

8、执行build_android_r21b.sh进行交叉编译:

./build_android_r21b.sh

9、执行完成后可以去文件生成目录(/usr/hui/ndk/ffmpeg-4.3.1/android/armeabi-v7a)查看编译生成的文件:
在这里插入图片描述
10、在第9步中查看到生成的文件是动态库so格式的,如果要想编译成静态库,只需要修改第6步中的两个配置参数:

--disable-static \
--enable-shared \

修改为
--enable-static \
--disable-shared \

修改后重新进行编译生成静态库结果如下:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值