前言
前面我们已经教过了ffmpeg-android,libx264,librtmp的编译方法
由于ffmpeg本身就支持libx264和librtmp,这一章我们将它们整合起来,一起集成到ffmpeg当中
上面三个库不会单独编译的,请参考之前的博客,也是NDK系列教程
修改configure脚本中的文件生成规则
Window,Linux中编译生成可执行程序的命名规则,和Android的习惯是不一样的
如果我们想让ffmpeg按照Android的习惯来命名库文件,就需要调整规则
打开configure脚本,搜索以下选项,并替换为下面的代码
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
修改configure脚本中的libx264配置
搜索到【enabled libx264】项,删除旧代码,替换为
enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264
configure脚本默认会从系统的pkg-config目录查找头文件
我们这样修改后,就会到我们指定的库目录去查找头文件了
这样就不会出现libx264 not found,或librtmp not found的问题了
修改configure脚本中的librtmp配置
搜索到【enabled libxrtmp】项,删除旧代码,替换为
enabled librtmp && require librtmp librtmp/rtmp.h RTMP_Socket -lrtmp
修改x264编译生成的头文件
新版本的libx264,生成的头文件有问题,无法通过编译
因为它没有引用stdint库,这样就不能使用int_16_t,int_32_t等类型了
找到x264.h,将stdint.h包含进去即可
有时编译时会提示libx264 not found,但不是真的找不到,只是因为这个错误查找失败了
//x264.h
#include
#include "x264_config.h"
准备ffmpeg的依赖库
将libx264和librmtp编译出来的头文件和静态库,全部放到同一个目录下面
ffmpeg编译时需要引用这些文件,即下面脚本中LIBRARY变量指向的目录
编写编译脚本
在ffmpeg目录下创建一个sh脚本,输入以下代码,尤其要注意下三个extra参数不能写错
#!/bin/bash
echo ">>>>>>>>> build ffmpeg with x264 librtmp >>>>>>>> build done
关注
打赏