专栏首页用户1692782的专栏手撕RTSP协议系列(9)——TEARDOWN

手撕RTSP协议系列(9)——TEARDOWN

上一篇我们讲了RTSP PAUSE消息,本篇我们来看下RTSP TEARDOWN消息!

TEARDOWN作用

TEARDOWN是拆卸的意思,对于RTSP而言,就是结束流传输,同时释放与之相关的资源,TEARDWON之后,整个RTSP连接也就结束了!好了,接下来我们来仔细看一下:

TEARDOWN格式

首先还是看一下TEARDOWN请求的消息格式:

如图中,TEARDOWN消息中,指定了URI,不用多说了;RTSP版本号也是我们的老朋友了;CSeq表示序列号;Authorization表示认证信息;User-Agent是用户代理;Session表示会话ID(SETUP消息请求之后RTSP sever返回的会话id)。

感觉不够直观,哈哈,来来来,抓包献上,分析协议没有抓包总感觉像缺了灵魂:

该TREADOWN消息中,消息序列号为10,用户代理为LibVLC/3.0.11,这是我们使用VLC播放器rtsp流的一个代理,消息序列号为10, Session为之前SETUP请求后服务端返回的session字段的值,用于表示此次会话连接!

发出去请求后,服务端同样也会回馈response的消息,response的格式如下:

回复消息中包含RTSP 版本号,状态码以及针对状态码的描述;同时返回消息的序列号(对应请求序列号)以及session id;另外还返回日期信息!服务端正常返回该消息,则此次RTSP连接消息结束!

我们来看一个抓包文件:

从抓包文件中可以看出,服务端回复200 Ok的消息,表示正常回复;同时也返回CSeq和Session,CSeq和Session的值与TEARDOWN请求中的值是一致的;另外返回了结束的日期和时间!

TEARDOWN示例

好了,老规矩,最后再来一个完整TEARDWON请求和回复的例子:

TEARDOWN请求

TEARDOWN rtsp://192.17.1.73:554/Streaming/Channels/101/?transportmode=unicast&profile=Profile_1 RTSP/1.0\r\n
CSeq: 10\r\n
Authorization: Digest username="admin", realm="bcad28138995", nonce="a1a5b9d3865180dccbaffb1cb2eb2a27", uri="rtsp://192.17.1.73:554/Streaming/Channels/101/", response="c5c005ef16638dfa326dcfc0c3f54aab"\r\n
User-Agent: LibVLC/3.0.11 (LIVE555 Streaming Media v2016.11.28)\r\n
Session: 1659421772\r\n\r\n

TEARDOWN的回复

RTSP/1.0 200 OK\r\n
CSeq: 10\r\n
Session: 1659421772\r\n
Date: Thu, Aug 27 2020 18:31:13 GMT\r\n\r\n

关于TEARDOWN就介绍到这里了,TEARDOWN之后,整个RTSP连接就结束了。不过RTSP还有一些其他常见的OPTION,如SET_PARAMETER,GET_PARAMETER,接下来我们就简单介绍一下这些指令!下一篇见了,老铁们!

本文分享自微信公众号 - 视界音你而不同(WorldOfVideoAndAudio),作者:马龙飞

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

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

    哈喽,久违的小伙伴们!之前开了一个专辑手撕了rtmp协议!对于流媒体协议,rtsp协议也是很常见的,接下来我们继续手撕,手撕rtsp协议!本篇我们首先来简单了解...

    视界音你而不同
  • 手撕RTSP协议系列(13)——RTCP协议

    之前的文章,介绍了RTSP和RTP协议,RTSP用于建立连接及发送请求等,RTP用于实际的媒体数据传输。整个RTSP的流程中,还有一种不可或缺的协议, 那就是R...

    视界音你而不同
  • 手撕RTSP协议系列(6)——SETUP

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

    视界音你而不同
  • 手撕RTSP协议系列(7)——PLAY

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

    视界音你而不同
  • 手撕RTSP协议系列(8)——PAUSE

    上一篇我们讲解了RTSP PLAY消息,PLAY请求成功之后,RTSP server就会一直向客户端发送RTP数据包!开始“播放”之后,我们相应的就会有暂停,停...

    视界音你而不同
  • 手撕RTSP协议系列(10)——GET_PARAMETER

    上一篇我们介绍了RTSP的TEARDOWN指令,用于结束一个RTSP的会话!本篇我们来介绍RTSP GET_PARAMETER!

    视界音你而不同
  • 手撕RTSP协议系列(11)——RTSP_SET_PARAMETER

    上一篇介绍了RTSP的GET_PARAMETER消息,看到这个消息类型,我们很容易习惯性的想到应该还要有一个RTSP_SET_PARAMETER消息,如我我们所...

    视界音你而不同
  • 手撕RTSP协议系列(4)——OPTION

    上一篇,我们介绍了sdp相关信息,接下来开始我们介绍RTSP相关的选项,本篇我们首先来看一下OTPION选项。

    视界音你而不同
  • 手撕RTSP协议系列(5)——DESCRIBE

    上一篇我们介绍了RTSP的OPTION指令,客户端发起OPTION请求后,得到了RTSP服务器支持的指令。在此之后,客户端会继续向服务器发送DESCRIBE消息...

    视界音你而不同

扫码关注云+社区

领取腾讯云代金券