RTSP协议简介

实时流协议RTSP是一个应用层协议,用于控制具有实时特性的数据(例如多媒体流)的传送。

RTSP协议一般与RTP/RTCP和RSVP等底层协议一起协同工作,提供基于Internet的整套的流服务。它可以选择发送通道(例如:UDP、组播UDP和TCP)和基于RTP的发送机制。它可以应用于组播和点播。RTP, RTCP,RSVP 定义如下:
  1. 实时传输协议RTP(Real-time Transport protocol)
  2. 实时传输控制协议RTCP(Real-time Transport Control protocol)
  3. 实时流协议RTSP(Real Time Streaming protocol)
  4. 资源预留协议RSVP(Resource Reserve Protocol)

RTSP协议机理:
客户机在向视频服务器请求视频服务之前,首先通过HTTP协议从Web服务器获取所请求视频服务的演示描述(Presentation description )文件,在RTSP中,每个演示(Presentation)及其所对应的媒体流都由一个RTSP URL标识。整个演示及媒体特性都在一个演示描述(Presentation description )文件中定义,该文件可能包括媒体编码方式、语言、RTSP URLs、目标地址、端口及其它参数。用户在向服务器请求某个连续媒体流的服务之前,必须首先从服务器获得该媒体流的演示描述(Presentation description )文件以得到必需的参数,演示描述文件的获取可采用HTTP、email或其他方法。
利用该文件提供的信息定位视频服务地址(包括视频服务器地址和端口号)及视频服务的编码方式等信息。然后客户机根据上述信息向视频服务器请求视频服务。视频服务初始化完毕,视频服务器为该客户建立一个新的视频服务流,客户端与服务器运行实时流控制协议RTSP,以对该流进行各种VCR控制信号的交换,如播放(PLAY)、停止(PAUSE)、快进、快退等。当服务完毕,客户端提出拆线(TEARDOWN)请求。服务器使用RTP/UDP协议将媒体数据传输给客户端,一旦数据抵达客户端,客户端应用程序即可播放输出。在流式传输中,使用RTP/RTCP/UDP和RTSP/TCP两种不同的通信协议在客户端和服务器间建立联系。
如下图:
这里写图片描述
RTSP中的所有的操作都是通过服务器和客户方的消息应答来完成的,其消息包括请求(Request)和响应(Response)两种,RTSP正是通过服务器和客户端的消息应答来完成媒体流的创建、初始化(SETUP)、VCR控制(PLAY、PAUSE)以及拆线(TEARDOWN)等操作的。如下图:
这里写图片描述
RSTP 一些基本方法及用途:
OPTIONS 获得有效方法
SETUP 建立传输
ANNOUNCE 改变媒体文件的类型
DESCRIBE 获得媒体文件的类型
PLAY 播放
RECORD 刻录
REDIRECT 转换客户端到新的服务器
PAUSE 暂停
SET PARAMETER 设置设备,编码等参数
TEARDOWN 移除状态

完整的播放过程:
GET 过程:
C->W: GET /twister.sdp HTTP/1.1
Host: www.example.com
Accept: application/sdp
W->C: HTTP/1.0 200 OK
Content-Type: application/sdp
v=0
o=- 2890844526 2890842807 IN IP4 192.16.24.202
s=RTSP Session
m=audio 0 RTP/AVP 0
a=control:rtsp://audio.com/twister/audio.en
m=video 0 RTP/AVP 31
a=control:rtsp://video.com/twister/video
SETUP过程:
C->A(audio): SETUP rtsp://audio.com/twister/audio.en RTSP/1.0
CSeq: 1
Transport: RTP/AVP/UDP;unicast
;client_port=3056-3057
A->C: RTSP/1.0 200 OK
CSeq: 1
Session: 12345678
Transport: RTP/AVP/UDP;unicast
;client_port=3056-3057;
;server_port=5000-5001
C->V(video): SETUP rtsp://video.com/twister/video RTSP/1.0
CSeq: 1
Transport: RTP/AVP/UDP;unicast
;client_port=3058-3059

V->C: RTSP/1.0 200 OK
CSeq: 1
Session: 23456789
Transport: RTP/AVP/UDP;unicast
;client_port=3058-3059
;server_port=5002-5003

PLAY 过程:
C->V: PLAY rtsp://video.com/twister/video RTSP/1.0
CSeq: 2
Session: 23456789
Range: smpte=0:10:00-
V->C: RTSP/1.0 200 OK
CSeq: 2
Session: 23456789
Range: smpte=0:10:00-0:20:00
RTP-Info: url=rtsp://video.com/twister/video
;seq=12312232;rtptime=78712811
C->A: PLAY rtsp://audio.com/twister/audio.en RTSP/1.0
CSeq: 2
Session: 12345678
Range: smpte=0:10:00-

A->C: RTSP/1.0 200 OK
CSeq: 2
Session: 12345678
Range: smpte=0:10:00-0:20:00
RTP-Info: url=rtsp://audio.com/twister/audio.en
;seq=876655;rtptime=1032181

close 过程:
C->A: TEARDOWN rtsp://audio.com/twister/audio.en RTSP/1.0
CSeq: 3
Session: 12345678
A->C: RTSP/1.0 200 OK
CSeq: 3
C->V: TEARDOWN rtsp://video.com/twister/video RTSP/1.0
CSeq: 3
Session: 23456789
V->C: RTSP/1.0 200 OK
CSeq: 3

关于RTSP的一些时间概念:
normal play time (NPT): seconds, microseconds
MPTE timestamps (seconds, frames)
absolute time (for live events)

SDP会话描述协议:为会话通知、会话邀请和其它形式的多媒体会话初始化等目的提供了多媒体会话描述。会话目录用于协助多媒体会议的通告,并为会话参与者传送相关设置信息。 SDP 即用于将这种信息传输到接收端。 SDP 完全是一种会话描述格式――它不属于传输协议 ――它只使用不同的适当的传输协议,包括会话通知协议 (SAP) 、会话初始协议(SIP)、实时流协议 (RTSP)、 MIME 扩展协议的电子邮件以及超文本传输协议 (HTTP)。SDP 的设计宗旨是通用性,它可以应用于大范围的网络环境和应用程序,而不仅仅局限于组播会话目录。
SDP是会话描述协议的缩写,是描述流媒体初始化参数的格式,由IETF作为RFC 4566颁布。流媒体是指在传输过程中看到或听到的内容,SDP包通常包括以下信息:
(1)会话信息· 会话名和目的
   · 会话活动时间
   由于参与会话的资源是受限制的,因此包括以下附加信息是非常有用的
   · 会话使用的带宽信息
   · 会话负责人的联系信息
(2)媒体信息
   · 媒体类型,例如视频和音频
   · 传输协议,例如RTP/UDP/IP和H.320。
· 多播地址和媒体传输端口(IP多播会话)
   · 用于联系地址的媒体和传输端口的远端地址(IP单播会话)
SDP描述由许多文本行组成,文本行的格式为<类型>=<值>,<类型>是一个字母,<值>是结构化的文本串,其格式依<类型>而定。
SDP格式(带*为可选):
Session description
v= (protocol version) //该行指示协议的版本
o= (owner/creator and session identifier)
例如: o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4 //o行中包含与会话所有者有关的参数(1:第一个参数表明会话发起者的名称,该参数可不填写,如填写和SIP消息中,from消息头的内容一致:2:第二个参数为主叫方的会话标识符:3:第三个参数为主叫方会话的版本,会话数据有改变时,版本号递增:4:第四个参数定义了网络类型,IN表示Internet网络类型,目前仅定义该网络类型:5:第五个参数为地址类型,目前支持IPV4和IPV6两种地址类型:6:第六个参数为地址:表明会话发起者的IP地址,该地址为信令面的IP地址,信令PDP激活时为手机分配。)
s= (session name) //表明本次会话的标题,或会话的名称
i=* (session information)
u=* (URI of description)
e=* (email address)
p=* (phone number)
c=* (connection information - not required if included in all media)
b=* (zero or more bandwidth information lines)
One or more time descriptions (“t=” and “r=” lines, see below)
z=* (time zone adjustments)
k=* (encryption key)
a=* (zero or more session attribute lines)
Zero or more media descriptions
Time description
t= (time the session is active)
r=* (zero or more repeat times)
Media description, if present
m= (media name and transport address)
例如: m=audio 3458 RTP/AVP 0 96 97 // m行又称媒体行,描述了发送方所支持的媒体类型等信息(1: 第一个参数为媒体名称:表明支持音频类型。2: 第二个参数为端口号,表明UE在本地端口为3458上发送音频流。3: 第三个参数为传输协议,一般为RTP/AVP协议。4:四-七参数为所支持的四种净荷类型编号)
m=video 3400 RTP/AVP 98 99 //m行又称媒体行,描述了发送方所支持的媒体类型等信息
i=* (media title)
c=* (connection information - optional if included at
session-level)
b=* (zero or more bandwidth information lines)
k=* (encryption key)
a=* (zero or more media attribute lines)

From:http://blog.csdn.net/tjy1985/article/details/7996121

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值