您当前的位置: 首页 >  音视频

命运之手

暂无认证

  • 1浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Android音视频开发】【028】Linux下编译ffmpeg with x264 & librmtp

命运之手 发布时间:2021-08-11 23:08:14 ,浏览量:1

前言

前面我们已经教过了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             
关注
打赏
1654938663
查看更多评论
0.1167s