RTMP协议

音视频 专栏收录该内容
9 篇文章 0 订阅

RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。RTMP与HTTP一样,都属于TCP/IP四层模型的应用层。(百度百科)

协议握手的过程

Client 发送 C0 和 C1 消息来启动握手过程。客户端必须接收到 S1 消息,然后发送 C2 消息。客户端必须接收到S2 消息,然后发送其他数据。服务端必须接收到 C0 或者 C1 消息,然后发送 S0 和 S1 消息。服务端必须接收到 C2 消息,然后发送其他数据。

	+-------------+                           +-------------+
    |    Client   |       TCP/IP Network      |    Server   |
    +-------------+            |              +-------------+
          |                    |                     |
    Uninitialized              |               Uninitialized
          |          C0        |                     |
          |------------------->|         C0          |
          |                    |-------------------->|
          |          C1        |                     |
          |------------------->|         S0          |
          |                    |<--------------------|
          |                    |         S1          |
     Version sent              |<--------------------|
          |          S0        |                     |
          |<-------------------|                     |
          |          S1        |                     |
          |<-------------------|                Version sent
          |                    |         C1          |
          |                    |-------------------->|
          |          C2        |                     |
          |------------------->|         S2          |
          |                    |<--------------------|
       Ack sent                |                  Ack Sent
          |          S2        |                     |
          |<-------------------|                     |
          |                    |         C2          |
          |                    |-------------------->|
     Handshake Done            |               Handshake Done
          |                    |                     |
              Pictorial Representation of Handshake

请添加图片描述
抓包分析一下,RTMP是在TCP协议基础之上的,首先要进行TCP握手,在实际中先会发送C0+C1,然后服务端响应S0+S1+S2,然后客户端再发送C2。
通过wireshark了解到,RTMP应用层协议1537字节,版本号一个字节,数据占用1536字节。

请添加图片描述

RTMP连接的建立

论文中是这样描述的:
请添加图片描述
实际上通过协议分析,有出入。请添加图片描述
省略了客户端向服务端发送Peer bandwidth

协议中RTMP流的创建

论文中定义创建如下,但是在Abobe实现中,通过抓包工具看出,并非如此。
请添加图片描述
在这里插入图片描述
请添加图片描述

推送RTMP流

进行四步操作:
1.publish 告诉服务端我要进行推流了。
2.onStatus 服务端说你开始吧。
3.客户端发送MetaData:告诉服务端我推送的流媒体的信息。
请添加图片描述
4.发送Video/Audio Data

请添加图片描述

播放RTMP流

请添加图片描述

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值