如果rtmp推流地址:
rtmp://服务器地址:rtmp端口/路径/名称
对应的websocket地址:
ws://服务器地址:websocket端口/路径/名称.flv
举例:
live作为路径,s作为流名称,rtmp端口是1932那么rtmp地址如下:
rtmp://127.0.0.1:1932/live/s
对应的websocket的地址:
ws://127.0.0.1:8000/live/s.flv
因为这里8000是websocket的端口
我用的是wireshark捕获的rtmp,
rtmp推流流程:
这里面wireshark判断当前协议是否是rtmp的标志是这个包里是否有Real Timing Message Control
Frame的开头是个网络类型(4byte),通过工具捕获到他的值是2,也就是family:ip,正常的TCP/IP协议
Internet Protocal Version:
这里面包含了帧长度,(帧长度+4byte=包的长度),还包含了,seq,ack,Win数据长度
通过跟踪发现: client向服务器推流到server,包括audio Data,和video Data:
format为1的时候,format为3的时候
客户端(client) Server(server)
msg:client->server
client :seq 17 Server:seq:1
server->client: 第一次握手
client->server:再握手
Server->client:第三次握手
client->Server:rtmp所谓real timing message control来握手
c->s: Handshake C0+C1
s->c:rely(指的是seq,ack的正常服务器应答)
c->s: Handshake S0+S1+S2
s->c:rely
c->s:Handshake:C2
s->c:rely
c->s:set chunk size 4096
s->c:rely
c->s:connect('live')
s->c:rely
c->s:Window Acknowledgement Size:5百万
s->c:rely
c->s:set peer bandwidth:5百万
s->c:rely
c->c:set chunk size 60000
s->c:rely
c->s:rely (只不过是 seq,ack交互,没有实体)
s->c:rely
c->s:releaseStream('1')
s->c:rely
c->s:FCPublish('1')
s->c:rely
c->s:createStream('1')
s->c:rely
c->s:_result()
s->c:rely
c->s:publish('1')
s->c:rely
c->s:onStatus('NetStream.Publish.Start')
s->c:rely
c->s:setDataFrame()
video:avc1 audio:mp4a
s->c:rely
c->s:Audio Data
s->c:rely
c->s:Video Data
VideoData:用的是h264的keyframe
Audio Data:用的是aac的keyframe

rtmp流程解析的更多相关文章

  1. TCP/IP协议三次握手与四次握手流程解析

    原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...

  2. SSL/TLS算法流程解析

    SSL/TLS 早已不是陌生的词汇,然而其原理及细则却不是太容易记住.本文将试图通过一些简单图示呈现其流程原理,希望读者有所收获. 一.相关版本 Version Source Description ...

  3. TCP/IP协议三次握手与四次握手流程解析(转载及总结)

    原文地址:http://www.2cto.com/net/201310/251896.html,转载请注明出处: TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式  TCP/IP协议的详 ...

  4. Django生命周期 URL ----> CBV 源码解析-------------- 及rest_framework APIView 源码流程解析

    一.一个请求来到Django 的生命周期   FBV 不讨论 CBV: 请求被代理转发到uwsgi: 开始Django的流程: 首先经过中间件process_request (session等) 然后 ...

  5. [MapReduce_3] MapReduce 程序运行流程解析

    0. 说明 Word Count 程序运行流程解析 &&  MapReduce 程序运行流程解析 1. Word Count 程序运行流程解析 2. MapReduce 程序运行流程图

  6. HBase - 数据写入流程解析

    本文由  网易云发布. 作者:范欣欣 本篇文章仅限内部分享,如需转载,请联系网易获取授权. 众所周知,HBase默认适用于写多读少的应用,正是依赖于它相当出色的写入性能:一个100台RS的集群可以轻松 ...

  7. EurekaClient自动装配及启动流程解析

    在上篇文章中,我们简单介绍了EurekaServer自动装配及启动流程解析,本篇文章则继续研究EurekaClient的相关代码 老规矩,先看spring.factories文件,其中引入了一个配置类 ...

  8. Mysql流程解析

    Mysql流程解析 流程图 流程图解析 客户端发送一条sql语句. 1.此时,mysql会检查sql语句,查看是否命中缓存,如果命中缓存,直接返回结果,不继续执行.没有命中则进入解析器. 2.解析器会 ...

  9. Session (简介、、相关方法、流程解析、登录验证)

    Session简介 Session的由来 Cookie虽然在一定程度上解决了"保持状态"的需求,但是由于Cookie本身最大支持4096字节,以及Cookie本身保存在客户端,可能 ...

  10. Java开发学习(二十三)----SpringMVC入门案例、工作流程解析及设置bean加载控制

    一.SpringMVC概述 SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装.SpringMVC是处于Web层的框架,所以其主要的作用就是用来 ...

随机推荐

  1. Newtonsoft.Json解决中文编码问题

    Newtonsoft.Json解决中文编码 默认Newtonsoft.Json序列化对象后,返回的中文未进行编码. 需要将编码转换的话,需要 1 2 3 4 5 6 7 var json = Json ...

  2. Dump Rtmp Audio Stream To AAC Formate File (从Rtmp流提取并保存AAC音频文件)

    一.准备工作 参考:https://www.cnblogs.com/doudouyoutang/p/10220599.html 搭建本地rtmp服务: https://www.cnblogs.com/ ...

  3. 一个问题:六位八段数码管(Verilog)

    [基本信息] 需求:verilog程序,显示任意六位字符或数值,包含点号,且能够按需点亮位数.(学习篇) 芯片型号:cyclone Ⅳ EP4CE10F17C8 数码管属性:六位.八段 [最终成果图] ...

  4. ABC342

    E 建反图 + 拓扑排序. 先求出直接与 \(n\) 连接的点的答,就是最后一辆车的发车时间.然后再做拓扑排序. 假如我们知道点 \(u\) 的答案为 \(ans_u\) 并且 \(u,v\) 相连, ...

  5. Windows 下自动预约申购 i茅台

    今天分享一个自动预约抢茅子的工具! 前期准备工作: 1.需安装:.Net6 依赖 (根据操作系统选择 x64 或 x86 版本进行下载.) 安装软件 1.软件下来下来之后,解压并进入软件目录,我们双击 ...

  6. 【踩坑】.NET 8.0 自定义IExceptionHandler不生效

    中间件实现异常处理 在ASP.NET Core里,我们可以使用中间件(Middleware)实现全局的异常处理. 如内置的异常处理中间件 UseExceptionHandler app.UseExce ...

  7. 记录vue和js操作——尽管很快实现了功能,可总感觉到不爽

    需求产生的原因是:后端有一些数据是从旧平台直接迁移过来的,新平台需要根据迁移过来的数据,自动生产新的数据格式. 操作符有如下几种,分项.支路和数字配合操作符可以自定义组合,例如 [0000000000 ...

  8. 《Objective-C Direct Methods》学习笔记

    原文通过对Objective-C发展史.Objective-C中Runtime的动态派发,C语言的直接派发进行铺垫介绍,引出了direct methods这个"新特性"(文章写于2 ...

  9. markdown折叠展开代码

    背景 有的时候,我们的代码太多,直接用cout<<"hello";很不方便. 我们可以将代码折叠. 效果 代码 普通代码折叠 <details> <s ...

  10. WPF/C#:BusinessLayerValidation

    BusinessLayerValidation介绍 BusinessLayerValidation,即业务层验证,是指在软件应用程序的业务逻辑层(Business Layer)中执行的验证过程.业务逻 ...