RTSP协议

概述

下面我们先看看总的RTSP的推流和拉流过程

步骤 RTSP推流 RTSP拉流
第一步 OPTION 查询服务器端可⽤⽅法 OPTION 查询服务器端可⽤⽅法
第二步 ANNOUNCE 发送媒体描述信息 DESCRIBE得到媒体描述信息
第三步 SETUP建⽴RTSP会话 SETUP建⽴RTSP会话
第四步 RECORD请求传送数据 PLAY请求开始传送数据
第五步 RTP数据推送 RTP数据传送播放中
第六步 TEARDOWN关闭会话,退出 TEARDOWN关闭会话,退出

可以看出,推流和拉流的过程还是很相似的,下面我们抓包分析一下

RTSP推流

 第一步:OPTION 查询服务器端可⽤⽅法

1.C->S:OPTION request //询问S有哪些⽅法可⽤

1.S->C:OPTION response //S回应信息的public头字段中包括提供的所有可⽤⽅法

 第⼆步:ANNOUNCE 发送媒体描述信息

2.C->S:ANNOUNCE request //客户端发送媒体描述信息给服务器

 2.S->C:ANNOUNCE response //S回应媒体描述信息,并返回了Session ID

 第三步:SETUP建⽴RTSP会话

3.1C->S:SETUP request //通过Transport头字段列出可接受的传输选项,请求S建⽴会话

 

RTP:31590 RTCP:31591

3.1 S->C:SETUP response //S建⽴会话,通过Transport头字段返回选择的具体转输选项,并返
回建⽴的Session ID;

 C->S

RTP: 31590 -> 59472

RTCP: 31591 -> 59473

3.2C->S:SETUP request //通过Transport头字段列出可接受的传输选项,请求S建⽴会话

 3.2 S->C:SETUP response //S建⽴会话,通过Transport头字段返回选择的具体转输选项

 第四步:RECORD请求传送数据

4.C->S:RECORD request //C向S请求发送数据

 

 4.S->C:RECORD response //S回应该允许的信息

第五步: RTP数据推送

C->S:发送流媒体数据 // 通过RTP协议传送数据

视频

音频

第六步:TEARDOWN关闭会话,退出

6.C->S:TEARDOWN request //C请求关闭会话

6.S->C:TEARDOWN response //S回应该请求

 

RTSP拉流

第⼀步:查询服务器端可⽤⽅法

1.C->S:OPTION request //询问S有哪些⽅法可⽤

1.S->C:OPTION response //S回应信息的public头字段中包括提供的所有可⽤⽅法

 第⼆步:DESCRIBE得到媒

2.C->S:DESCRIBE request //要求得到S提供的媒体描述信息体描述信息

2.S->C:DESCRIBE response //S回应媒体描述信息,⼀般是sdp信息

 第三步:SETUP建⽴RTSP会话

3.1 C->S:SETUP request //通过Transport头字段列出可接受的传输选项,请求S建⽴会话

  3.1 S->C:SETUP response //S建⽴会话,通过Transport头字段返回选择的具体转输选项

 3.2 C->S:SETUP request //通过Transport头字段列出可接受的传输选项,请求S建⽴会话

 3.2 S->C:SETUP response //S建⽴会话,通过Transport头字段返回选择的具体转输选项

 第四步:PLAY请求开始传送数据

4.C->S:PLAY request //C请求S开始发送数据

4.S->C:PLAYresponse //S回应该请求的信息

 

 可能流已经播放了⼀段时间,npt=起始时间

第五步: RTP数据传送播放中

S->C:发送流媒体数据 // 通过RTP协议传送数据

视频 这⾥的ssrc 来⾃服务器

第六步:TEARDOWN关闭会话,退出

 6.C->S:TEARDOWN request //C请求关闭会话

 6.S->C:TEARDOWN response //S回应该请求

原文地址:https://www.cnblogs.com/vczf/p/13962106.html