librtmp推流库在瑞芯微RV1109平台上的移植和应用(一)

librtmp推流库在瑞芯微RV1109平台上的移植和应用(一) 王小二 2023-11-22 14:07:42 877

今天介绍在嵌入式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

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 1 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
王小二
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区