RTSP协议详解【入门篇】

一、RTSP协议简介

1、定义

RTSP(Real Time Streaming Protocol)是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP对流媒体提供了诸如暂停,快进等控制,而它本身并不传输数据,RTSP的作用相当于流媒体服务器的远程控制。服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。而且允许同时多个串流需求控制(Multicast),除了可以降低服务器端的网络用量,还可以支持多方视频会议(Video onference)。

该协议用于C/S模型, 是一个基于文本的协议, 用于在客户端和服务器端建立和协商实时流会话。

2、网络体系

RTSP属于应用层协议,负责建立和控制会话,rtp负责多媒体数据的传输,rtcp配合rtp做控制和流量统计,他们通常一起配合使用。
在这里插入图片描述

二、RTSP协议报文

1、简单的RTSP交互过程

C表示RTSP客户端,S表示RTSP服务端

第一步:查询服务器端可用方法

C->S OPTION request //询问S有哪些方法可用

S->C OPTION response //S回应信息的public头字段中包括提供的所有可用方法

第二步:得到媒体描述信息

C->S DESCRIBE request //要求得到S提供的媒体描述信息

S->C DESCRIBE response //S回应媒体描述信息,一般是sdp信息

第三步:建立RTSP会话

C->S SETUP request //通过Transport头字段列出可接受的传输选项,请求S建立会话

S->C SETUP response //S建立会话,通过Transport头字段返回选择的具体转输选项,并返回建立的Session ID;

第四步:请求开始传送数据

C->S PLAY request //C请求S开始发送数据

S->C PLAY response //S回应该请求的信息

第五步: 数据传送播放中

S->C 发送流媒体数据 // 通过RTP协议传送数据

第六步:关闭会话,退出

C->S EARDOWN request //C请求关闭会话

S->C TEARDOWN response //S回应该请求

2、RTSP协议wireshark抓包分析

OPTION

OPTIONS rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 1 //每个消息都有序号来标记,第一个包通常是option请求消息
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)

RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 1 //每个回应消息的cseq数值和请求消息的cseq相对应
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SCALE, GET_PARAMETER //服务器提供的可用的方法

DESCRIBE

DESCRIBE rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 2
token:
Accept: application/sdp //获取sdp信息
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)

RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 2
x-prev-url: rtsp://192.168.20.136:5000
x-next-url: rtsp://192.168.20.136:5000
x-Accept-Retransmit: our-retransmit
x-Accept-Dynamic-Rate: 1
Cache-Control: must-revalidate
Last-Modified:Fri, 10 Nov 2006 12:34:38 GMT
Date: Fri, 10 Nov 2006 12:34:38 GMT
Expires: Fri, 10 Nov 2006 12:34:38
GMT Content-Base: rtsp://192.168.20.136:5000/xxx666/
Content-Length: 344
Content-Type: application/sdp v=0 //以下都是sdp信息
o=OnewaveUServerNG 1451516402 1025358037 IN IP4 192.168.20.136 //owner
s=/xxx666 //会话名
u=http://URI of description
e=admin@ //email address
c=IN IP4 0.0.0.0 //connection information
t=0 0 //time the session is active //开始时间 结束时间
a=isma-compliance:1,1.0,1
a=range:npt=0-
m=video 0 RTP/AVP 96 //媒体描述,所有支持的 m=<媒体><端口><传送><格式列表>
a=rtpmap:96 MP4V-ES/90000
a=fmtp:96 profile-level id=245;config=000001B0F5000001B509000001000000012000C888B0E0E0FA62D089028307
a=control:trackID=0//trackID=0表示视频流用的是通道0

SETUP

SETUP rtsp://192.168.20.136:5000/xxx666/trackID=0 RTSP/1.0 //setup trackID 0
CSeq: 3
Transport: RTP/AVP/TCP;unicast;interleaved=0-1 //RTP:包 TCP:传输协议 interleaved 0 :RTP包 1:rtcp包
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)

RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 3
Session: 6310936469860791894 //服务器回应的会话标识符 Cache-Control: no-cache
Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=6B8B4567//当为UDP时会包含端口号

PLAY

PLAY rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 4
Session:6310936469860791894 Range: npt=0.000- //设置开始播放时间的范围
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)

RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 4
Session: 6310936469860791894
Range: npt=0.000000-
RTP-Info: url=trackID=0;seq=17040;rtptime=1467265309
//seq和rtptime都是rtp包中的信息

TEARDOWN

TEARDOWN rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 5
Session: 6310936469860791894
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)

RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 5
Session: 6310936469860791894
Connection: Close

以上方法都是交互过程中最为常用的,其它还有一些重要的方法如get/set_parameter,pause,redirect等等

三、RTSP协议与其他协议对比

1、RTSP和HTTP的区别和联系

区别:
(1)都在应用层;都属于TCP协议
(2)都可以做直播、点播
联系:
(1)RTSP是有状态的,连接一直存在且命令有先后顺序;HTTP无状态,每次连接后断开且命令之间没有依赖
(2)RTSP一般需要多个通道,命令和数据是分开的;HTTP一般在TCP一个通道上传输
(3)RTSP协议一般传输的是ts,mp4格式的流;HTTP没有特定的流
(4)RTSP默认端口号554;HTTP默认端口号80

2、RTSP和SIP的区别和联系

区别:
(1)都在应用层;都属于TCP协议
(2)都负责一次通信过程的建立和结束,不负责中间的传输部分
(3)都基于纯文本的信令协议,穿墙性能良好
(4)都需要服务器支持,都支持会话中重定向
(5)都使用sdp协议来传送媒体参数,使用rtp/rtcp协议来传输/控制媒体流
联系:
(1)RTSP是专门为流媒体制定的协议,在多个媒体流的时间同步方面比sip强大。rtsp还提供网络负载均衡
(2)sip一般用来创建一次音频、视频通话(双向),而rtsp一般用来做视频点播、视频监控等(单向)。当然,从原理上讲,rtsp也可以做双向的视频通话
(3)RTSP默认端口号554;SIP默认端口号5060

3、RTSP和RTMP的区别和联系

区别:
(1)都在应用层;都属于TCP协议
(2)都可以做直播、点播
联系:
(1)RTMP协议是Adobe的私有协议,未完全公开;RTSP协议是共有协议,并有专门机构做维护
(2)RTMP协议一般传输的是flv,f4v格式流;RTSP协议一般传输的是ts,mp4格式的流
(3)RTSP默认端口号554;RTMP默认端口号1935

参考博客:
https://www.cnblogs.com/lidabo/p/6553212.html
https://blog.csdn.net/xiejiashu/article/details/51914024

猜你喜欢

转载自blog.csdn.net/Run_Feng/article/details/108450703