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 内部分配的注意事项
    • 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信息,用于下次判断。

注意: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信息,用于下次判断。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tomcat没有错,但是还是一闪而过(端口被占用)

首先&#xff0c;看tomcat日志文件&#xff0c;在tomcat目录下有个logs文件夹&#xff0c;进去找到刚才运行时的日志文件。 然后&#xff0c;我的是Address already in use: JVM_Bind <null>:8080&#xff0c;8080端口被占用了。 此时需要将该端口给kill掉 cmd netsta…

librtmp分析(接收数据包处理)

RTMP详细分析&#xff08;三次握手&#xff09; RTMP详细分析(Message 消息&#xff0c;Chunk分块) librtmp分析&#xff08;发送数据包处理&#xff09; rtmp协议中的message的接收涉及有message 组合多个chunk、相对时间戳计算绝对值。 分析一下librtmp库中的int RTMP_ReadP…

动态可缓存的内容管理系统(CMS)(转)

摘要&#xff1a;内容管理系统(CMS)在各大商业站点和门户站点中扮演着重要的角色&#xff0c;是内容有效组织和快速发布极为重要的基础平台。目前主流的内容发布系统都使用静态页面进行内容发布&#xff0c;在我们的实际使用过程中我们深切的感受到静态内容发布存在着很多弊端&…

mysql 自动化 安装_mysql自动化安装

MySQL安装一般使用RPM或者源码安装的方式。RPM安装的优点是快速,方便.缺点是不能自定义安装目录.如果需要调整数据文件和日志文件的存放位置,还需要进行一些手动调整。源码安装的优点是可以自定义安装目录,缺点是编译时间长,过程复杂其实还有一种方式,定制RPM包.它相当于用源码…

hls协议分析

目录1、简介1.1、 综述1.2 、HLS 协议编码格式要求1.3 、HLS 协议优势1.4 、HLS 协议劣势1.5 、框架图2、m3u8文件2.1 、单码率适配流m3u8文件2.2 、多码率适配流m3u8文件2.3 、Playlist file2.4 、Tags3、ts文件3.1 、ts文件结构3.2、ts文件结构部分截图3.3、ts层&#xff08;…

OpenGL 学习笔记(1)初始化窗体

前言 学习OpenGL只是兴趣爱好&#xff0c;因为对图形比较感兴趣.将以OpenGl的红宝书(7)和蓝宝石书(4)为基础,虽然手头有红宝书书&#xff0c;但感觉没蓝宝石书写的好 准备工作 首先要下载一个工具库(GLUT) http://www.opengl.org/resources/libraries/glut/ 只要把相应文件放在…

基于云平台的家居综合监测管理系统的设计与实现

时间过得飞快&#xff0c;转眼间大四即将毕业&#xff0c;有点留恋和不舍。可能是越是到了离别的时候&#xff0c;越开始珍惜吧。大一开始&#xff0c;通过考核进入了学校院系实验室开始学习&#xff0c;这期间自学了很多东西&#xff0c;很充实&#xff0c;也参加过很多比赛&a…

小白学数据分析-----留存率分析_I[次日留存率突然下降了50%?]

最近在做留存分析时&#xff0c;遇到了不少的情况&#xff0c;也经常会有人问我&#xff0c;为什么我的游戏突然次日留存率降了一半。如果留存率是单单作为一个简单的指标的话&#xff0c;那对你价值还是蛮有限的&#xff0c;今天就和大家说说一个case&#xff0c;这是不久前解…

mysql映射mapper_SQL映射器Mapper接口(MyBatis)

SQL映射器Mapper接口MyBatis基于代理机制&#xff0c;可以让我们无需再写Dao的实现。直接把以前的dao接口定义成符合规则的Mapper。注意事项&#xff1a;1&#xff0e;接口必须以Mapper结尾,名字是DomainMapper2&#xff0e;mapper.xml文件要和Mapper接口建立关系,通过namespac…

计算机图形学画线_在计算机图形学中直接使用线方程

计算机图形学画线计算机图形学| 直接使用线方程 (Computer Graphics | Direct Use of Line Equation) The standard line equation, as we all know is used for drawing a line. It is given by: y mx c. 众所周知&#xff0c;标准线方程式用于绘制线。 由下式给出&#xff…

c/c++ 编程试题

c/c 编程试题 带*号为选作题&#xff0c;给出代码截屏和编译运算结果截屏 1.编程:选取M个最大的数 编程实现从N个无序数中选取M个最大的数(0 < M < N ) 思路&#xff1a;通过冒泡排序或者选择排序对N个数进行递减排序&#xff0c;然后输入前M个数即可。这里我想到的是通…

mysql inception web_基于Inception搭建MySQL SQL审核平台Yearing

Inception1. Inceptionj简介Inception是一款针对MySQL的SQL语句审核自动化运维工具。使用Inception&#xff0c;将会给DBA带来更大的便利性&#xff0c;将DBA从繁冗的工作中解放出来&#xff0c;做更多的自动化工作&#xff0c;或者从架构方面研究如何更大程度地保证数据库的高…

VS2010 运行库设置

如下图所示&#xff0c;当在一个EXE工程中调用lib或dll时&#xff0c;2个工程的下面选项一定要一致&#xff0c;否则会导致exe工程编译不过。 原则&#xff1a; Debug下&#xff0c;默认是MTd&#xff1b; Release下&#xff0c;默认是MT。 转载于:https://www.cnblogs.com/lgh…

零拷贝、mmap、sendfile

目录零拷贝mmapsendFile总结零拷贝 要了解零拷贝&#xff0c;首先得先了解一下传统 IO 的执行流程&#xff0c;这里举个例子&#xff0c;通过传统的 IO 进行网络传输来传输一个文件。 先上一张图&#xff0c;这张图就代表了传统 IO 传输文件的流程。 读取文件的时候&#xf…

网页服务器和mysql服务器_实现Web服务器之间使用同一个MYSQL和相同的网页配置文件的方法...

实现Web服务器之间使用同一个MYSQL和相同的网页配置文件的方法发布时间&#xff1a;2020-04-15 16:42:41来源&#xff1a;亿速云阅读&#xff1a;133作者&#xff1a;三月栏目&#xff1a;数据库亿速云负载均衡(Cloud Load Balancer)是对多台云服务器进行流量分发的服务。亿速云…

传128GB版iPad4售价为799/929美元

外媒9to5mac报道&#xff0c;苹果将推出一款升级版iPad4&#xff0c;外观和iPad 4相同&#xff0c;还是黑白两色的&#xff0c;只加入了新的SKU。 据报道&#xff0c;这款升级版iPad4还有128GB版&#xff0c;随着这条消息传出&#xff0c;不久关于128GB版iPad4的售价信息也传出…

(西工程-金花)小米路由器连接哆点设置WiFi保姆式教程

小米路由器连接电源,用根网线一端插入寝室的网口处,另一端插入小米路由器的WAN口手机或者电脑连接WiFi,我这里是通过手机浏览器打开192.168.31.1进入无线路由器管理页面进行配置小米路由器&#xff0c;配置WiFi的一些基本参数,例如:WiFi名称,密码之类的信息 进入无线路由器管理…

go 声明二维数组_一篇文章了解Go语言中数组Arrays的使用内幕

概述与其他编程语言类似&#xff0c;Go语言也有数组array。Go语言中&#xff0c;数组的行为和其他语言没有什么不同.Go语言中还有一个叫做切片slice的东西&#xff0c;它就像是对数组的引用。在本文中&#xff0c;我们将只研究数组。定义数组是同一类型元素的连续集合&#xff…

ffmpeg 使用ffplay 进行 hls 拉流 分析 1

ffmpeg 使用 ffplay 进行 hls 拉流 分析 1 从使用ffplay 调用 http://192.168.1.100:8080/live/livestream.m3u8 开始&#xff0c;进入到ffmpeg 的分析使用的协议选择相应的解复用器的步骤。 其他协议或者文件方式的使用ffplay也是这个步骤流程的。 目录&#xff1a;一、流程图…

搜狗输入法输出特殊符号快捷键

https://www.petefreitag.com/cheatsheets/ascii-codes/ 参考上个编码网站大全 详细步骤为&#xff1a;alt长按 &#xff0b; 编码数字 例如&#xff1a;平方的编码为178-----长按alt178 即可&#xff0c;178是数字一个一个挨个按即可 常用的特殊符号如下&#xff1a; 平方&…