FFmpeg编译Android使用的so库

Android平台下FFmpeg类库一共包含下面8个:


image.png

上图是我编译好的arm架构的,我编译的FFmpeg的版本为2.6.9,NDK版本为R12b,编译环境为Linux。

1、Linux环境下NDK配置

1、安装vim
2、配置vim
vim /etc/vim/vimrc 打开vim的配置文件
set nu 显示行号
set tabstop tab键长度
set cursorline 高亮显示当前这一行
set ruler 右下角显示光标位置
3、下载NDK Linux环境的包
NDK下载链接
4、解压NDK安装包
5、配置NDK环境
vim ~/.bashrc 在末尾加上如下你NDK目录配置如下图:

image.png

然后保存退出
source ~/.bashrc 更新一下环境变量
执行 ndk-build命令,如下图NDK配置完成
image.png

2、FFmpeg下载解压

FFmpeg下载地址
自行选择对应的版本

3、执行FFmpeg的configure文件

cd到FFmpeg解压目录
vim configure,修改几行命令

FFmpeg编译Android使用的so库_第1张图片
image.png

然后执行 ./configure 命令,如果没有安装yasm,执行 ./configure --disable-yasm

4、编写编译shell脚本

我的脚本如下:


FFmpeg编译Android使用的so库_第2张图片
image.png

脚本中可以尽情发挥,FFmpeg有几大模块,你需要什么就配置什么,这样可以减少so库的大小。

5、编译

执行编写的shell脚本 ./buil_android.sh就完事了。就这么简单

6、题外话

如上编译,如果项目中几大模块都需使用的话,8个so库都的搬运到项目中去,CMAKE配置挺麻烦的,有没有简单的办法,只有一个so库呢?答案是肯定的,必须有啊,哈哈。

image.png

这次脚本跟上面不一样,这是编译生成的是.a文件,libavcodec.a,libavfilter.a,libswresample.a,libavformat.a,libavutil.a,libswscale.a,libpostproc.a,libavdevice.a
该脚本运行完后,会把上述的 .a文件打包为1个.so文件: libffmpeg.so,这是make install后面的那一行命令的结果。

你可能感兴趣的:(FFmpeg编译Android使用的so库)