详解-FFmpeg2.7移植android-(一)- 源码编译

来源:互联网 发布:matlab矩阵转置 编辑:程序博客网 时间:2024/06/08 08:01

声明,本文章源于网络上解决方案的参考和说明

需求:

Linux环境(本人用的虚拟机,linux 14.04)

make工具(自行安装,可以下载离线包,也可以git,不过才装的linux不带git,可以安上,这个很常用)

android NDK(注意是for linux,我的版本是r9c,下载后解压)

FFmpeg2.7源码(可以下载Linux包,也可以git官方获取最新版,目前为2.7,若是下载的需解压)

步骤:

0.需改configure文件,将下面4行

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)'

1.在FFmpeng源码根目录下创建build_android.sh文件便于生成FFmpeg的配置

内容如下:

注意在linux用到了$HOME,其他模拟linux环境可能用的是/home,该脚本执行了configure文件,其参数的意义可以从./configure --help中获得

说明注意参数:

prefix 输出目录$PERFIX--->$(pwd)/android/$ARCH--->./android/arm

enable-shared 生成.so共我们的androi程序调用

disablea-ffserver android用不着

disablea-doc 不生成文档,提示生成的速度

enable-cross-compile 启用交叉编译

cross-prefix 交叉编译前缀,比如你的是/bin/,那么它就会把gcc编译器设置为/bin/gcc,如果没找到$(cross-prefix)gcc文件,执行构建时肯定会找不到GCC编译器

target-os 当前OS

arch 目标构架


2.给build_android.sh添加执行权限

chmod +x build_android.sh


3.执行build_android.sh,叫上sudo是启用root权限执行,会请求密码,输入时不会显示

sudo ./build_android.sh

执行成功会生成几个文件,其中含有config.h


4.修改config.h


#difine av_restrict restirct

改为

#define av_restrict

#define restrict

即他们在源码中都无实际意义


4.执行make命令

sudo make

会执行一段时间,生成了很多.o和.d文件


5.执行make install

sudo make install

执行完后,在android/arm/bin下会找到生成的.so和.h文件


至此FFmpeg已经完全生成我们需要的.so库,这些库和.h将会在我们后续的android工程中用到

0 0