一文搞懂 RTMP直播流媒体协议

一文搞懂 RTMP直播流媒体协议

RTMP 直播媒体流

前言

一、RTMP 简介

1、RTMP 介绍

2、变种

二、RTMP 流媒体播放过程

1、简介

2、握手(HandShake)

3、建立网络连接(NetConnection)

4、建立网络流(NetStream)

5、播放(Play)

参考链接

前言

本文主要讲解 RTMP 协议,并通过 wireshark 对 RTMP 进行抓包并分析具体过程。

一、RTMP 简介

1、RTMP 介绍

RTMP 是 Real Time Messaging Protocol( 实时消息传输协议) 的首字母缩写。该协议基于 TCP,是一个协议族,包括 RTMP 基本协议及 RTMPT/RTMPS/RTMPE 等多种变种。

RTMP 与 HTTP 一样, 都属于 TCP/IP 四层模型的应用层。

RTMP 协议传输时会对数据格式化,而实际传输的时候为了更好地实现多路复用、分包和信息的公平性,发送端会把 Message 划分为带有 Message ID 的 Chunk,每个 Chunk 可能是一个单独的 Message,也可能是 Message 的一部分,在接收端会根据 Chunk 中包含的 data 的长度,message id 和 message 的长度把 chunk 还原成完整的 Message,从而实现信息的收发。 (Message, Chunk)

2、变种

它有多种变种:

RTMP 工作在 TCP 之上,默认使用端口 1935; RTMPE 在 RTMP 的基础上增加了加密功能;encrypt RTMPT 封装在 HTTP 请求之上,可穿透防火墙;http–rtmp RTMPS 类似 RTMPT,增加了 TLS/SSL 的安全功能;

二、RTMP 流媒体播放过程

1、简介

下面分析打开一个 RTMP 流媒体到视音频数据开始播放的全过程。

RTMP 协议规定, 播放一个流媒体有两个前提步骤:

第一步, 建立一个网络连接( NetConnection);

第二步, 建立一个网络流( NetStream)。

其中,网络连接代表服务器端应用程序和客户端之间基础的连通关系。网络流代表了发送多媒体数据的通道。服务器和客户端之间只能建立一个网络连接,但是基于该连接可以创建很多网络流。他们的关系如图所示:

播放一个 RTMP 协议的流媒体需要经过以下几个步骤:握手,建立连接,建立流,播放。RTMP 连接都是以握手作为开始的。建立连接阶段用于建立客户端与服务器之间的“ 网络连接” ;建立流阶段用于建立客户端与服务器之间的“ 网络流”;播放阶段用于传输视音频数据。

我们分析上面 wireshark 抓到的报文。

2、握手(HandShake)

要建立一个有效的RTMP Connection链接,首先要“握手”:客户端要向服务器发送C0,C1,C2(按序)三个chunk,服务器向客户端发送S0,S1,S2(按序)三个chunk,然后才能进行有效的信息传输。RTMP协议本身并没有规定这6个Message的具体传输顺序,但RTMP协议的实现者需要保证这几点:

客户端要等收到S1之后才能发送C2

客户端要等收到S2之后才能发送其他信息(控制信息和真实音视频等数据)

服务端要等到收到C0之后发送S1

服务端必须等到收到C1之后才能发送S2

服务端必须等到收到C2之后才能发送其他信息(控制信息和真实音视频等数据)

握手开始于客户端发送C0、C1块。服务器收到C0或C1后发送S0和S1。 当客户端收齐S0和S1后,开始发送C2。当服务器收齐C0和C1后,开始发送S2。 当客户端和服务器分别收到S2和C2后,握手完成。

握手示意图如下图所

猜你喜欢 💖

王者荣耀最克铠的英雄是谁 凯爹克制英雄介绍
365会被黑吗

王者荣耀最克铠的英雄是谁 凯爹克制英雄介绍

📅 09-01 👁️ 4570
映客怎么直播玩游戏
5443655

映客怎么直播玩游戏

📅 09-15 👁️ 3526
迷你世界钻石在哪 钻石位置介绍
365bet现金赌场

迷你世界钻石在哪 钻石位置介绍

📅 07-07 👁️ 7485