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

▼魔方 西西 提交于 2020-10-15 20:44:44


点击上方「蓝字」关注我们


上一讲我们讲了RTSP的DESCRIBE指令,本篇接着来看下一条:SETUP。





SETUP 作用 





SETUP请求的作用是指明媒体流该以什么方式传输;每个流PLAY之前必须执行SETUP操作;发送SETUP请求时,客户端会指定两个端口,一个端口用于接收RTP数据;另一个端口接收RTCP数据,偶数端口用来接收RTP数据,相邻的奇数端口用于接收RTCP数据!





SETUP格式




我们来看SETUP请求的数据格式:

SETUP表明消息类型;

URI表示请求的RTSP服务器的地址;

RTSP_VER表明RTSP的版本;

TRANSPORT表明媒体流的传输方式,具体包括传输协议如RTP/UDP;指出是单播,组播还是广播;声明两个端口,一个奇数,用于接收RTCP数据,一个偶数,用于接收RTP数据;

CSeq数据包请求序列号;

User-Agent指明用户代理;

Session标识会话ID;

Authorization标识认证信息;

我们来看一个抓包文件:

该SETUP请求中,Transport字段声明了两个端口,26968和26969,同时指明了通过UDP发送RTP数据,26968端口用来接收RTP数据,26969端口用来接收RTCP数据,unicast表示传输方式为单播!

请求之后,如果没有异常情况,RTSP服务器的回复比较简单,回复200 OK消息,同时在Transport字段中增加sever_port,指明对等的服务端RTP和RTCP传输的端口,增加ssrc字段,增加mode字段,同时返回一个session id,用于标识本次会话连接,之后客户端发起PLAY请求的时候需要使用该字段,回复消息大概结构如下图:

我们来看一个抓包文件:

通过该抓包文件,我们可以看出,服务端对应SETUP请求的RTP和RTCP的传输端口分别为8284和8285;ssrc的值为4a7fb757;mode="play"表示当前rtsp连接是播放模式!





SETUP 案例 





好了,关于SETUP的介绍,本篇就到这里,老规矩,放一个实际的案例:


request

SETUP rtsp://192.17.1.63:554/trackID=1 RTSP/1.0
Transport: RTP/AVP/UDP;unicast;client_port=26968-26969
CSeq: 4
User-Agent: Lavf58.42.100
Authorization: Digest username="admin", realm="IP Camera(23306)", nonce="a946c352dd3ad04cf9830d5e72ffb11e", uri="rtsp://192.17.1.63:554/trackID=1", response="e29ca030062df6022faa77fefde40b28"


Response

RTSP/1.0 200 OK
CSeq: 4
Session: 337474243;timeout=60
Transport: RTP/AVP/UDP;unicast;client_port=26968-26969;server_port=8284-8285;ssrc=4a7fb757;mode="play"
Date: Fri, Apr 10 2020 19:07:19 GMT


好了,RTSP的SETUP消息我们也介绍完了,本篇以后,我们对SETUP的认识就又上一个新的台阶了!本篇就到这里了,下一篇我们继续,开始PLAY,欢迎持续关注!


往期推荐


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

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

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

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

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




 

扫码关注了解更多



交流群已开启,有需要的朋友,公众号后台回复“交流群”,获取入群方式!


 




点点 在看 行不行




本文分享自微信公众号 - 视界音你而不同(WorldOfVideoAndAudio)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!