一 前言
此文介绍了如何编译ffmpeg
先交代一下工具以及版本,这是必须项,不然会由于版本不同而脚本一样会有各种各样的问题
- ffmpeg 3.2.5
- ndk r14b
- macOS操作系统
那么此文有什么用
- 编译ffmpeg全android cpu版本 静态库(.a) 或者 动态库(.so)
- 集成h264软编码
- 将ffmpeg的各种so合并打包成一个
ok 在正式开始之前,先介绍下原文,此文是在原文基础上略加修改的,原文是编译出全平台的so档,包括aac/h264编码
https://github.com/mabeijianxi/FFmpeg4Android
二 编译
如果没有编译需要,直接拿android_more目录下的合成的lib档就好
如果想自己编译,请按照以下步骤
- 下载源码
- 将ffmpeg-3.2.5目录下的所有sh文件中 ndk目录指向自己的目录
- 编译之前,删掉android_more目录下的所有资料,确保生成的资料不是本文已经编译好的
- 打开命令行,cd到ffmpeg-3.2.5目录,输入./zed_build_all_more.sh
等待15-20分钟后,会在android_more目录下产生编译好的文件,其中lib目录下的.a是ffmpeg各种静态档,so是这些.a的合成动态档,开发者按需拿取
三 调试
1. 如何知道ffmpeg脚本的编译项是什么意思
打开命令行,cd到ffmpeg-3.2.5目录,输入./configure --help,会出现当前版本的ffmpeg的编译项
2. 如果本文最后没有出现合成后的so档
请单独运行ffmpeg-3.2.5目录下以so结尾的sh档
3. 如何编译出ffmpeg的各种.so动态档
- 在libx264目录
将所有sh档修改ndk目录为自己的指定目录,
修改所有的sh脚本
--enable-shared \
--disable-static \
修改为
--disable-shared \
--enable-static \
编译运行
x264_build_all.sh
编译结束会在libx264-android产生so档(之前的是.a档) - 在ffmpeg-3.2.5目录
以arm架构为例 参考zed_arm_build_ex.sh(运行此脚本产生ffmpeg的各种so动态档)与zed_arm_build_more.sh的区别,其它架构可以仿照arm架构的来写