文章目录
- RTMP播放基本流程
- TCP握手过程
- RTMP握手过程
- connect连接
- createStream 创建流
- play 播放命令
- deleteStream删除流
- RTMP数据组成
 
 
 
RTMP(Real Time Messaging Protocol)是一个应用层协议,主要用于在Flash player和服务器之间传输视频、音频、控制命令等内容。
 该协议的突出优点是: 低延时。
 RTMP基于TCP(tcp默认使用端口1935)
RTMP播放基本流程
- TCP三次握手
- RTMP握手
- connect连接
- createStream创建流
- play 播放流
- deleteStream删除流
TCP握手过程
流顺序: c–客户端 s–服务端
 c – s
 s–c
 c–s
 
RTMP握手过程
c–s
 s–c
 c–s

 一般的发送顺序如下:
 1.客户端向服务端同时发送C0+C1
 2. 服务端确认版本号后,向客户端同时发送S0+S1+S2
 3. 客户端接收到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)主要分为两大类:控制消息和数据消息。分优先级,优先级高的先行。优先级低的不能阻塞优先级高的。
 