前言
前面我们已经教过了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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?