编译ffmpeg库

目录

环境

下载配置ndk工具

下载

配置ndk环境变量

下载ffmpeg库并解压

编写编译脚本

执行脚本编译ffmpeg

1. 编译x86-64时提示安装yasm

2. Linux中执行bash脚本报错/bin/bash^M: bad interpreter: No such file or directory

3. so链接错误

把编译好的库加入项目中

编写cmakelist.txt文件

目录结构

在工程build.gradle文件中,配置so库的目录


编译环境:ubantu 21

ndk版本:r25b

ffmepg版本:4.2.1

环境

下载配置ndk工具

下载

NDK 下载  |  Android NDK  |  Android Developers (google.cn)

解压   

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

配置ndk环境变量

# 打开配置文件
vim /etc/profile  
# 保存退出,更新一下环境变量
source /etc/profile
# 测试ndk环境是否配置成功
ndk-build

如果不 是显示“ndk-build not found”, 则说明你的ndk安装成功

下载ffmpeg库并解压

下载地址: http://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2

#解压
tar -jxvf ffmpeg-4.2.1.tar.bz2

解压完成后,进入ffmpeg目录,修改configure文件。 在此文件,你可以选择要编译的模块。

由于编译出来的动态库文件名的版本号在.so之后(例如 “libavcodec.so.5.100.1”),而Android平台不能识别这样的文件名,所以需要修改这种文件名

# 跳到3717行,原来的变量为
#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)'

编写编译脚本

#!/bin/bash

NDK=/root/android/android-ndk-r25b
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64/
API=29

function build_android
{
echo "Compiling FFmpeg fo
  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值