手撕RTSP协议系列(7)——PLAY

 

 

 

上一篇我们熟悉了RTSP_SETUP消息,SETUP可以说是PLAY的准备流程,只有SETUP请求被成功回复之后,客户端才可以发起PLAY请求。本篇我们就来看一下PLAY消息。

 

PLAY的作用 

PLAY消息是客户端发送的播放请求,发送播放请求的时候可以指定播放区间!发起播放请求后,如果连接正常,则服务端开始播放,即开始向客户端按照之前在TRASPORT中约定好的方式发送音视频数据包!播放流程便这样开始了!

 

PLAY的格式 

我们先来看一下PLAY消息中常包含的一些字段:

RTSP URI表明请求的RTSP 地址;

RTSP version表明版本号;

CSeq 表示请求的序列号;

User-Agent表示用户代理;

Session 表示会话id,值为SETUP请求之后,服务端返回的session id的值;

Authorizatiuon表示认证信息;

Range是PLAY消息特有的,代表请求播放的时间段,使用ntp时间来表示。

我们来看一个直观的抓包文件:

通过抓包文件,我们可以看到,该请求是第6条交互指令,会话id是之前setup请求的回复消息返回的session id,Range的值为"npt=0.0000-",表示从开始播放,默认一直播放!

同样,客户端发送PLAY请求之后,服务端会回复RTSP消息,常见的回复字段格式如下:

Rtsp Version表示RTSP的版本;

状态码表示当前消息的状态,没有异常的情况下一般为200;

状态描述是针对状态码的描述,如200对应的描述为OK;

CSeq表示RTSP包的序号;

Session表示会话ID,SETUP返回时确定的ID;

RTP-Info表示RT;

Date表示日期;

我们来看一个抓包文件

CSeq,Session, Date就不多介绍了,主要看下RTP-info:

第一个url表示视频播放的地址,第一个seq表示第一个rtp视频数据包开始的序列号,第一个rtptime表示视频开始播放的时间戳,后面的一组表示音频播放相关的信息,同样也包括url,seq,rtptime!

 

PLAY 案例

好了,最后放上一个实例:

RTSP PLAY (requst)

PLAY rtsp://192.17.1.63:554/ RTSP/1.0\r\n
Range: npt=0.000-\r\n
CSeq: 6\r\n
User-Agent: Lavf58.42.100\r\n
Session: 337474243\r\n
Authorization: Digest username="admin", realm="IP Camera(23306)", nonce="a946c352dd3ad04cf9830d5e72ffb11e", uri="rtsp://192.17.1.63:554/", response="9ea6c2659d3bce8d129ca3549ecc7fbf"\r\n\r\n

 

RTSP PLAY (response)

RTSP/1.0 200 OK\r\n
CSeq: 6\r\n
Session: 337474243\r\n
RTP-Info: url=rtsp://192.17.1.63:554/trackID=1;seq=3658;rtptime=1710363406,url=rtsp://192.17.1.63:554/trackID=2;seq=6598;rtptime=4065225152\r\n
Date: Fri, Apr 10 2020 19:07:20 GMT\r\n\r\n

 

好了,关于RTSP play的介绍就到这里,我们下一讲见!

 

往期推荐

手撕RTSP协议系列(1)——Rtsp基本流程

手撕RTSP协议系列(2)——Rtsp消息格式

手撕RTSP协议系列(3)——sdp格式详解

手撕RTSP协议系列(4)——OPTION

手撕RTSP协议系列(5)——DESCRIBE

手撕RTSP协议系列(6)——SETUP

 

 

扫码关注了解更多,还有交流群哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值