librtmp分析(发送数据包处理)

RTMP详细分析(三次握手)
RTMP详细分析(Message 消息,Chunk分块)
librtmp分析(接收数据包处理)

rtmp协议中的message的发送涉及有message 分chunk、base header长度的变化、message header长度的变化,只查看文档比较难理解,分析一下librtmp库中的int RTMP_SendPacket(RTMP *r, RTMPPacket *packet, int queue)函数可以更好的理解。

注意:Packet 内部分配的注意事项

Packet内部内存分配是一次按最大的头部长度来分配的,再将数据指针m_body指向数据的位置,所以后续就可以动态调整头部的大小,而没有重复分配内存。
在这里插入图片描述

1、申请用于保存上一次发送的packet的信息的空间。

在这里插入图片描述

2、根据判断message header的长度的标识m_headerType,再和上一次Packet的数据类型、数据长度、时间戳判断是否可以再减少message header的长度。

在这里插入图片描述

3、根据message header的长度标识m_headerType获取message header的长度,这时base header长度还是默认1个字节的。和计算与上一个Packet的相对时间戳。

在这里插入图片描述

4、获取消息头和消息体的位置。

在这里插入图片描述

5、根据csid的值再增加base header的长度和是否要扩展时间戳再增加扩展时间戳空间。

在这里插入图片描述

6、设置base header部分数据到发送的数据空间中。

在这里插入图片描述

7、根据message header的长度设置相应的字段和设置扩展时间戳。

在这里插入图片描述

8、循环发送数据。

在这里插入图片描述
在这里插入图片描述

9、远程调用函数命令的额外处理。

在这里插入图片描述

10、保存这次Packet信息,用于下次判断。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值