流媒体协议--RTMP

文章目录

RTMP(Real Time Messaging Protocol)是一个应用层协议,主要用于在Flash player和服务器之间传输视频、音频、控制命令等内容。

该协议的突出优点是: 低延时。

RTMP基于TCP(tcp默认使用端口1935)

RTMP播放基本流程

  1. TCP三次握手
  2. RTMP握手
  3. connect连接
  4. createStream创建流
  5. play 播放流
  6. deleteStream删除流
TCP握手过程

流顺序: c--客户端 s--服务端

c -- s

s--c

c--s

RTMP握手过程

c--s

s--c

c--s

一般的发送顺序如下:

1.客户端向服务端同时发送C0+C1

  1. 服务端确认版本号后,向客户端同时发送S0+S1+S2

  2. 客户端接收到S2后发送C2到服务端

C0: 客户端版本

C1: 服务器版本

当前版本为3

C1 和 S1数据包长度为1536字节,C2 和 S2 数据包长度都是 1536 字节,基本就是 S1 和 C1 的副本。

connect连接

c--s:

不同的 Application Instance可根据功能等进行区分,比如直播可以用live来表示,点播回放可以用vod来表示

如 rtmp://192.168.152.21/lrun/s1

run: 为Application Instance

s1: 为房间号

createStream 创建流

c--s

s--c

服务器返回的stream ID为1,为后续的视频或者音频ID

createStream命令用于创建逻辑通道,该通道用于传输视频、音频、metadata,在服务器的响应报文中会返回 ,用于唯一的标示该Stream

play 播放命令

客户端发送play命令来播放指定流。开始传输音视频数据。

如果发送play命令后想要立即播放,需要清空play队列中的其它流,并将reset置为true

deleteStream删除流

客户端发送删除流,指定Stream ID, 服务器不对次消息回应

RTMP数据组成

发送:

接收:

组成:

Messgae消息主要分为三类: 协议控制消息、数据消息、命令消息等

协议控制消息: Type ID = 1 2 3 5 6

数据消息: Message Type ID = 8 9 18

8: Audio 音频数据

9: Video 视频数据

18: Metadata 包括音视频编码、视频宽高等信息。

命令消息:Message Type ID =17,20

Message StreamID是音视频流的唯一ID, 一路流如果既有音频包又有视频包,那么这路流音频包的StreamID和他视频包的StreamID相同

默认的Chunk Size是128字节, 实际发送多为一个Message包含一个Chunk

RTMP消息优先级:在RTMP中,消息(Message)主要分为两大类:控制消息和数据消息。分优先级,优先级高的先行。优先级低的不能阻塞优先级高的。

相关推荐
okok__TXF34 分钟前
Rpc导读
网络·网络协议·rpc
&向上1 小时前
RK3588配置成为路由器
网络·智能路由器·rk3588
猫猫的小茶馆2 小时前
【网络编程】UDP协议
linux·服务器·网络·网络协议·ubuntu·udp
十月ooOO2 小时前
小米AX3000T 路由器如何开启 SSH 安装 OpenWRT 系统,不需要降级 v1.0.91 (2025)
网络·ssh·路由器·openwrt
SKYDROID云卓小助手2 小时前
无人设备遥控器之如何分享数传篇
网络·人工智能·算法·计算机视觉·电脑
r_martian4 小时前
RPC:分布式系统的通信桥梁
网络·网络协议·rpc
KeLin&4 小时前
ESP32 websocket-client
网络·websocket·网络协议
科技小E5 小时前
EasyRTC:基于WebRTC与P2P技术,开启智能硬件音视频交互的全新时代
网络·网络协议·小程序·webrtc·p2p·智能硬件·视频监控
顾比魁5 小时前
pikachu之CSRF防御:给你的请求加上“网络身份证”
前端·网络·网络安全·csrf
祐言QAQ6 小时前
计算机网络之物理层——基于《计算机网络》谢希仁第八版
网络·网络协议·计算机网络