RTSP协议入门基础

                                                          RTSP协议入门基础

(一)RTSP身世:

 RTSP全称是Real Time Streaming Protocol 实时流传输协议是Real Network和Netscape共同提出的在互联网上传输流媒体数据(包括视频和音频数据)的应用层协议。RTSP的作用相当于遥控器可以对远端的服务器进行控制(播放,暂停,终止等)可以选择使用TCP或UDP来传送串流内容语法跟HTTP 1.1类似,用的端口号是554。(ps:先提示一下rtsp只是命令控制,传输具体的音视频数据是由rtp协议传输的,还有rtcp用于传输质量监控和会话成员管理)。RTSP被广泛用于安防,在线教育,直播等领域。感兴趣的读者可以详细研读rfc2326.pdf这份文档。

(二)RTSP通信交互过程:

计算机编程领域里所有通信交互就好比人与人之间的沟通,有问有答。世界上人与人之间的沟通也有很多语言如英语,汉语等(对应到计算机就是通信协议)。语言(协议)都是约定俗成的。rtsp类似于http使用纯文本来发送消息,rtsp是有状态的下面先总体看看rtsp基本交互步骤:

RTSP协议入门基础_第1张图片

由上图可以知道:RTSP操作过程首先,客户端连接到流服务器并发送一个OPTIONS查询服务端支持的方法 ,服务端返回支持的方法客户端再发送RTSP描述命令(DESCRIBE)服务通过一个SDP描述来进行回复,回复信息包括流数量、媒体类型等信息。客户端再分析该SDP描述,并为会话中的每一个流发送一个RTSP建立命令(SETUP),RTSP建立命令告诉服务器客户端用于接收媒体数据的端口。流媒体连接建立完成后,客户端发送一个播放命令(PLAY),服就开始在UDP端口上传送媒体流(RTP包)到客户端。 在播放过程中客户端还可以向服务器发送命令来控制快进、快退和暂停等。最后,客户端可发送一个终止命令(TERADOWN)来结束流媒体会话。

(三)RTSP的消息格式:

RTSP消息分为两类,请求消息(request)回应消息(ressponse)

 1 请求消息(request)

先上个直观的图吧:

RTSP协议入门基础_第2张图片

由图可知:

请求消息由 方法+URI+RTSP版本号,之后跟一条或多条消息。

URI:表示接收方的地址,如rtsp://192.168.0.110:8554/rtsp

CR:表示回车。LF:表示换行。

RTSP使用消息类型和消息体来表示不同类型的消息。最后一条消息要使用两个CR LF。

看看wireshark的抓包看一个RTSP的请求消息:

RTSP协议入门基础_第3张图片

如图中所示,该RTSP请求消息的方法为OPTIONS,请求的目标地址为rtsp://192.168.0.110:8554/rtsp,RTSP的版本为1.0;

包含两消息,第一为CSeq表示序列号,本次请求的序列号为2

二条为User-Agent,表示用户代理,值为”User-Agent: LibVLC/3.0.1 (LIVE555 Streaming Media v2018.02.18)”;

User-Agent为最后一条消息,其后要跟两组回车和换行!

回应消息(response)

先上图:

RTSP协议入门基础_第4张图片

回应消息由RTSP版本号+状态码+解释开头,之后跟一条或多条消息!

说明:

状态码:表示状态,同http的返回状态,如200,表示OK

解释:针对状态码的文本解释

后一条消息也是需要 跟两个回车和换行!

来看抓包的数据

 

RTSP协议入门基础_第5张图片

回复消息以Response标识,该消息中RTSP的版本号为1.0;

服务器回复的状态码为:200,解释为:ok

  • 消息内容为 Server类型,内容为VLC/2.2.8.

对RTSP消息的结构就有了比较全面的了解了!接下来我们来讲一讲sdp的详细格式

(四)SDP的格式详解:

简介

sdp,英文全称Session Description Protocol会话描述协议,对应RFC2327。RTSP协议中使用sdp进行媒体信息的描述(客户端发送describe后服务端以sdb方式回复).sdp应用语音通话SIP协议,监控安防GB28181国标, webRtc等。

sdp格式:

sdp信息由多行"="组成,其中是一个字符串,是一个字符串,type表示类型,value的格式视type而定,整个协议区分大小写,"="两侧不允许有空格。有点类似键值对。sdp会话描述包含一个会话级描述(session_level_description)和多个媒体级描述(media_level description)组成会话级描述的作用域是整个会话,其位置从"v="行开始到第一个媒体描述为止;媒体级描述是对单个的媒体流进行描述,如传输过程中的视频流信息,从m=开始到下一个媒体描述为止,如下图所示:

 

RTSP协议入门基础_第6张图片

会话级描述主要包含以下字段

RTSP协议入门基础_第7张图片

 媒体级描述主要包含以下字段

RTSP协议入门基础_第8张图片

上述图片中有些行是必须要的,带*号标记的行是可选的。必选的字段包括v=,o=,s=,t=,(对于会话级描述必选)m=(对于媒体级会话描述必选)。

各字段描述 :

1.version(必选)

格式:  v= 

描述: 表示sdp的版本号,不包含次版本号

我们来看一个抓包数据

RTSP协议入门基础_第9张图片

2.origin(必选)

格式:o=

描述:o=选项对会话的发起者进行了描述;

    :是用户的登录名,;

    :会话id,必须是唯一的,建议使用个NTP 时间戳;

    : 该会话公告的版本,

    : 网络类型,一般为"IN",表示internet

    : 地址类型,一般为IP4

    :地址.

RTSP协议入门基础_第10张图片

3.Session Name(必选)

格式:s=

会话名称,在整个会话中有且只有1个"s="

RTSP协议入门基础_第11张图片

4.Connection Data(可选)

格式: c=

描述:表示媒体连接信息;一个会话级描述中必须有"c="或者在每个媒体级描述中有一个"c="选项,也可能在会话级描述和媒体级描述中都有"c="选项;

network type表示网络类型,一般为IN,表示internet;

address type,地址类型,一般为IP4;

connection address,地址,可能为域名或ip地址两种形式

RTSP协议入门基础_第12张图片

5.Bandwidth(可选)

格式: b=:

描述:该选项描述了建议的带宽,单位 kbs/s,可选,modifier包括两种类型,CT和AS,CT表示总带宽,AS表示单个媒体带宽的最大值;bandwidth-value表示具体的带宽。

RTSP协议入门基础_第13张图片

6.Times(必选)

格式:t=

描述:t字段描述了会话的开始时间和结束时间, 为NTP时间,单位是秒;如果为0表示过了之后,会话一直持续;当都为0的时候,表示持久会话;

 

RTSP协议入门基础_第14张图片

start time和stop time均为0,表示一个持久的会话。

7.email(可选)

格式:e=

描述:用来描述邮件地址Vlc里没有抓包到这个。

 

8.phone number(可选)

格式:p=

描述:比较简单,用来描述电话号码

 

9.URI(可选)

格式:u=

描述:类似于url的一个值,这里不过多介绍了

10.a=(*) (可选)

格式 :a=<*>

描述:表示一个会话级别或媒体级别下的0个或多个属性

来看一个抓包文件:

RTSP协议入门基础_第15张图片

11.media information(必选)

格式:m=

描述:

表示媒体类型

"audio","video","application","data"(不向用户显示的数据),"control"(描述额外的控制通道);

表示媒体流发往传输层的端口,对于RTP,偶数端口用来传输数据,奇数端口用来发RTCP数据;

RTP数据发向偶数的UDP端口,而对应的控制信号RTCP数据发向相邻的奇数UDP端口(偶数的UDP端口+1)

表示传输协议,与"c="一行相关联,一般用RTP/AVP表示,即 Realtime Transport Protocol using the Audio/Video profile over udp,即我们常说的RTP over udp;

表示媒体格式,分为静态绑定和动态绑定

    静态绑定:媒体编码方式与RTP负载类型有确定的一一对应关系,如: m=audio 0 RTP/AVP 8

    动态绑定:媒体编码方式没有完全确定,需要使用rtpmap进行进一步的说明: 如: 

m=video 0 RTP/AVP 96

a=rtpmap:96 H264/90000

12. rtpmap(可选)

格式:a=rtpmap: /

描述:

payload type表示动态负载类型,如 98表示h264

encoding name表示编码名称,如H.264

clock rate表示时钟频率,如90000

我们来看一个抓包文件:

RTSP协议入门基础_第16张图片

至此,我们把RTSP的基础知识点讲完了,下一篇我们将详细讲解rtsp基本操作。

你可能感兴趣的:(音视频)