librtmp推流库在瑞芯微RV1109平台上的移植和应用(一)
今天介绍在嵌入式Linux下跑RTMP推流用的librtmp库的两种移植方法。目前,在网上发现很多作者写的东西都是错的,基本上都是复制粘贴,完全没有经过验证就照搬过去,对于技术学习角度来说,这是不严谨的,所以我决定自己重新再梳理一遍。
关于rtmp,目前我所了解的库有librtmp和srs-lib-rtmp,其中srs是比较容易的,它可以直接将H.264的码流推送到RTMP服务器,而librtmp则需要对H.264再做一次的封装,我们先来介绍librtmp在嵌入式平台上的移植,接下来我将用librtmp来实现MIPI摄像头的实时推流。
1、librtmp免openssl和zlib单独编译
1.1下载
git clone git://git.ffmpeg.org/rtmpdump
1.2修改过程
1、首先修改rtmp_sys.h文件。
在文件中找到#ifdef_WIN32在其前面增加一句#define NO_CRYPTO,同时找到/* USE_OPENSSL*/这个注释,修改为#elif defined(USE_OPENSSL)或者直接注释掉#else的内容。
2、修改Makefile文件。
这里主要去除编译时对openss和zlib动态库的依赖,在Makefile中找到 S(CC) SSO_LDFLAGS)S(LDFLAGS)-0 $@ S S>S(CRYPTO_LIB)这一行把最后的S(CRYPTO_LIB)删除
3、导入交叉编译环境
export
CROSS_COMPILE=/home/book/workspace/src_code/rv1126_rv1109_1inux_sdk_v1.8.0_20210224/buildroot/output/rockchip_rv1126_rv1109/host/bin/arm-inux-gnueabihf-
4、编译
make
5、测试
/home/book/workspace/src_code/rv1126_rv1109_inux_sdk_v1.8.0_20210224/buildroot/output/rockchip_rv1126_rv1109/host/bin/arm-Tinux-gnueabihf-g++simplest_librtmp_send264.cpp ibrtmp_send264.cpp Tibrtmp.a -osimplest_librtmp_send264
2、librtmp与openssl与zlib一起编译
下载地址:
因为librtmdump依赖于openss1和zlib所以先编译openss1和zlib
1、下载openss1-1.0.2shttps://www.openss1.org/source/o1d/1.0.2/
2、下载zTib-1.2.11http://www.zlib.net/
3、下载librtmpdump-2.4https://github.com/Bingnan/rtmpdump-2.4
2.1 openssl交叉编译
2.1.1 配置
setarch i386./config no-asm shared --prefix=/home/arm_instal1
setarch i386声明生成的是32位CPU,如果是64位CPU则去掉该部分
shared 生成动态链接库
no-asm 在交又编译过程中不使用汇编代码加速编译过程,原因是它的汇编代码是对arm格式不支持的
2.1.2 修改Makefile
cc =
/home/book/workspace/src_code/rv1126_rv1109_1inux_sdk_v1.8.0_20210224/buildrootoutput/rockchip_rv1126_rv1109/host/bin/arm-]inux-gnueabihf-gccAR=
AR=
/home/book/workspace/src_code/rv1126_rv1109_1inux_sdk_v1.8.0_20210224/buildroot/output/rockchip_rv1126_rv1109/host/bin/arm-inux-gnueabihf-ar $(ARFLAGS)rRANLIB=
RANLIB=
/home/book/workspace/src_code/rv1126_rv1109_1inux_sdk_v1.8.0_20210224/buildroot/output/rockchip_rv1126_rv1109/host/bin/arm-inux-gnueabihf-ranibZMI
NM=
/home/book/workspace/src_code/rv1126_rv1109_inux_sdk-v1.8.0_20210224/buildroot/output/rockchip_rv1126_rv1109/host/bin/arm-inux-gnueabihf-nm
2.1.3 编译
make
2.1.4 安装
make install
2.2 移植zlib-1.2.11
2.2.1 配置
./configure --prefix=/home/arm_instal7
2.2.2 修改 Makefile
2.2.3 编译
make
2.2.4 安装
make install
2.3 移植librtmpdump-2.4
2.3.1 修改顶层Makefile
其中XFLAGS是openssl和zlib 的头文件的路径
XLDFAGS是openssl和 zlib 的库文件的路径
2.3.2 修改librtmp目录下的Makefile
2.3.3 编译librtmp
make
2.3.4 安装
make install
至此,librtmp移植完成。
3、librtmp的使用
(1)初始化RTMP结构
//申请内存
RTMP_A11oc();
//初始化
RTMPRTMP_Init(rtmp);
(2)向RTMP服务器发起握手连接报文
//设置推流地址
RTMP_SetupURL(rtmp,URL);
//开启输出模式
RTMP_Enab]ewrite(rtmp);
//连接RTMP服务器
RTMP_Connect(rtmp,NULL);
//连接流
RTMP_ConnectStream(rtmp,0);
(3)连接成功后即可以开始循环发送报文,这里需要指定时间戳和数据类型
(4)关闭RTMP
RTMP_CIose();
(5)释放
RTMP_Free();
参考:
https://blog.csdn.net/fteworld/article/details/51171731?locationNum=7&fps=1
- 分享
- 举报
-
浏览量:6099次2022-05-11 15:14:51
-
浏览量:6993次2021-04-01 17:04:01
-
浏览量:826次2023-11-23 13:38:54
-
浏览量:1905次2022-12-16 16:27:02
-
浏览量:1286次2024-01-09 17:35:19
-
浏览量:6299次2022-05-17 16:26:53
-
浏览量:3659次2021-04-01 13:50:37
-
浏览量:5949次2021-04-01 16:47:04
-
浏览量:4005次2021-04-02 09:47:41
-
浏览量:1788次2023-11-20 17:27:49
-
浏览量:6103次2021-04-01 16:50:31
-
浏览量:2348次2022-10-09 10:38:23
-
浏览量:6438次2022-05-31 11:14:16
-
浏览量:3510次2022-09-03 09:03:36
-
浏览量:1392次2024-05-24 19:05:42
-
浏览量:3047次2022-05-17 09:00:35
-
浏览量:4867次2022-05-17 17:11:12
-
浏览量:1370次2023-04-19 09:08:29
-
浏览量:1044次2024-01-23 11:28:32
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
王小二
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明