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

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

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

OPTION(request)

我们在RTSP消息格式中讲过,rtsp分为request和response两大类消息,OPTION是一个request消息,其格式如下图:

我们来详细说下各个字段:

OPTIONS:标识请求命令的类型;

RTSP URI:请求的服务端的URI,以rtsp://开头的地址,一般为rtsp://ip:554(rtsp默认端口号);

RTSP VER:标识RTSP 版本号,一般常见RTSP/1.0;

CSeq:数据包序列号,由于OPTIONS一般而言为RTSP请求的第一条指令,一般而言,针对OPTIONS,该值为1;

User-Agent:用户代理;

我们来看一个抓包文件:

该抓包文件中,OPTIONS请求的服务器的URI为rtsp://192.17.1.63:554;RTSP的版本号为RTSP/1.0;CSeq为数据包的序列号,由于是第一个请求包,此处为1;User-Agent用户代理的值为Lavf58.42.100。

OPTIONS的功能

OPTIONS一般为RTSP客户端发起的第一条请求指令,该指令的目的是得到服务端提供了哪些方法!

OPTION(response)

回复消息的结构

OPTIONS的回复遵循RTSP response消息的格式,第一行回复RTSP的版本,状态码,状态描述;然后是序列号,与OPTION请求中的序列号相同;之后是Public字段,用于描述服务器当前提供了哪些方法;最后是Date字段,表示日期。

我们来看一个抓包文件:

抓包文件中:

回复的消息中RTSP版本为RTSP/1.0,

状态码为200, 表示正常,

状态描述字符为OK;

CSeq的值为1,与OPTIONS请求中的序列号一致;

Public表示了服务端支持的方法,此处有OPTIONS,DESCRIBE,PLAY,PAUSE,SETUP,TEARDOWN,SET_PARAMERTER,GET_PARAMETER,表示RTSP服务器支持这些方法;

Date表示日期和时间。

OPTION example

最后放一个完整的OPTIONS请求的示例:

请求

OPTIONS rtsp://192.17.1.63:554 RTSP/1.0\r\n
CSeq: 1\r\n
User-Agent: Lavf58.42.100\r\

回复

RTSP/1.0 200 OK\r\n
CSeq: 1\r\n
Public: OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER\r\n
Date:  Fri, Apr 10 2020 19:07:19 GMT\r\n

好了,关于OPTION请求的介绍和描述就到这里了,下一篇我们介绍RTSP中的DESCRIBE消息,欢迎持续关注哦!

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

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    视界音你而不同
  • 手撕RTSP协议系列(1)——Rtsp基本流程

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

    视界音你而不同

扫码关注云+社区

领取腾讯云代金券