RTSP协议简介(转载)
转自:http://ilinux.iteye.com/blog/505753
Real Time Streaming Protocol 或 者RTSP(实时流媒体协议),是由Real network 和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP提供一种可扩展的框架,使能够提供能控制的,按需传输实时数 据,比如音频和视频文件。源数据可以包括现场数据的反馈和存贮的文件。rtsp对流媒体提供了诸如暂停,快进等控制,而它本身并不传输数据,rtsp作用 相当于流媒体服务器的远程控制。传输数据可以通过传输层的tcp,udp协议,rtsp也提供了基于rtp传输机制的一些有效的方法。 
RTSP 消息格式: 
       RTSP 的消息有两大类,一是请求消息(request),一是回应消息(response),两种消息的格式不同. 
请求消息: 
       方法 URI RTSP版本       CR LF 
       消息头 CR LF          CR LF          
       消息体 CR LF 
其中方法包括OPTION回应中所有的命令,URI是接受方的地址,例如:rtsp://192.168.20.136 
RTSP 版本一般都是 RTSP/1.0.每行后面的CR LF表示回车换行,需要接受端有相应的解析,最后一个消息头需要有两个CR LF 
回应消息: 
       RTSP 版本 状态码 解释      CR LF 
       消息头 CR LF          CR LF 
       消息体 CR LF 
其中RTSP版本一般都是RTSP/1.0,状态码是一个数值,200表示成功,解释是与状态码对应的文本解释. 
简单的rtsp交互过程: 
       C 表示rtsp客户端,S表示rtsp服务端 
1.C->S:OPTION request       // 询问S有哪些方法可用 
1.S->C:OPTION response    //S 回应信息中包括提供的所有可用方法
2.C->S:DESCRIBE request      // 要求得到S提供的媒体初始化描述信息 
2.S->C:DESCRIBE response    //S 回应媒体初始化描述信息,主要是sdp
3.C->S:SETUP request             // 设置会话的属性,以及传输模式,提醒S建立会话 
3.S->C:SETUP response          //S 建立会话,返回会话标识符,以及会话相关信息
4.C->S:PLAY request        //C 请求播放 
4.S->C:PLAY response            //S 回应该请求的信息
S->C: 发送流媒体数据 
5.C->S:TEARDOWN request      //C 请求关闭会话 
5.S->C:TEARDOWN response //S 回应该请求
上述的过程是标准的、友好的rtsp流程,但实际的需求中并不一定按部就班来。 
其 中第3和4步是必需的!第一步,只要服务器客户端约定好,有哪些方法可用,则option请求可以不要。第二步,如果我们有其他途径得到媒体初始化描述信 息(比如http请求等等),则我们也不需要通过rtsp中的describe请求来完成。第五步,可以根据系统需求的设计来决定是否需要。 
rtsp 中常用方法: 
1.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 // 服务器提供的可用的方法 
2.DESCRIBE 
C 向S发起DESCRIBE请求,为了得到会话描述信息(SDP): 
DESCRIBE rtsp://192.168.20.136:5000/xxx666 RTSP/1.0 
CSeq: 2 
token: 
Accept: application/sdp 
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10  )
服务器回应一些对此会话的描述信息(sdp): 
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 
s=/xxx666 
u=http:/// 
e=admin@ 
c=IN IP4 0.0.0.0 
t=0 0 
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
3.SETUP 
客户端提醒服务器建立会话,并确定传输模式: 
SETUP rtsp://192.168.20.136:5000/xxx666/trackID=0 RTSP/1.0     
CSeq: 3  
Transport: RTP/AVP/TCP;unicast;interleaved=0-1       
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10  ) 
//uri 中 带有trackID=0,表示对该通道进行设置。Transport参数设置了传输模式,包的结构。接下来的数据包头部第二个字节位置就是 interleaved,它的值是每个通道都不同的,trackID=0的interleaved值有两个0或1,0表示rtp包,1表示rtcp包,接 受端根据interleaved的值来区别是哪种数据包。
服务器回应信息: 
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 
4.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包中的信息 
5.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等等 
ps: 
sdp 的格式 
v=<version> 
o=<username> <session id> <version> <network type> <address type> <address> 
s=<session name> 
i=<session description> 
u=<URI> 
e=<email address>
 p=<phone number>
 c=<network type> <address type> <connection address> 
b=<modifier>:<bandwidth-value> 
t=<start time> <stop time> 
r=<repeat interval> <active duration> <list of offsets from start-time> 
z=<adjustment time> <offset> <adjustment time> <offset> .... 
k=<method>
 k=<method>:<encryption key> 
a=<attribute>
 a=<attribute>:<value> 
m=<media> <port> <transport> <fmt list> 
v = (协议版本) 
o = (所有者/创建者和会话标识符) 
s = (会话名称) 
i = *  (会话信息) 
u = * (URI 描述) 
e = * (Email 地址) 
p = * (电话号码) 
c = * (连接信息) 
b = * (带宽信息) 
z = * (时间区域调整) 
k = * (加密密钥) 
a = * (0 个或多个会话属性行)  
时间描述: 
t = (会话活动时间) 
r = * (0或多次重复次数) 
媒体描述: 
m = (媒体名称和传输地址) 
i = * (媒体标题) 
c = * (连接信息 — 如果包含在会话层则该字段可选) 
b = * (带宽信息) 
k = * (加密密钥) 
a = * (0 个或多个媒体属性行)
参考文章:rfc2326(rtsp);rfc2327(sdp)
http://www.yuanma.org/data/2007/0113/article_2109.htm
RTSP协议简介(转载)的更多相关文章
- 接口测试第三课(HTTP协议简介) -- 转载
		一.打开百度URL详解: 用浏览器打开百度网址,输入任意关键字搜索后: 详细URL地址复制出来如下 https://www.baidu.com/s?ie=utf-8&f=8&rsv_b ... 
- TCP 协议简介-阮一峰(转载)
		TCP 协议简介 作者: 阮一峰 日期: 2017年6月 8日 TCP 是互联网核心协议之一,本文介绍它的基础知识. 一.TCP 协议的作用 互联网由一整套协议构成.TCP 只是其中的一层,有着自 ... 
- 转:SATA协议简介
		SATA协议简介 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/FA99999/article/details/70738724 1.概述 本文档主 ... 
- (转)RTSP协议详解
		转自:https://www.cnblogs.com/lidabo/p/6553212.html RTSP简介 RTSP(Real Time Streaming Protocol)是由Real ... 
- RTSP协议介绍 (转)
		1. 实 时流协议RTSP RTSP[3]协 议以客户服务器方式工作,它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制,如:暂停/继 续.后退.前进等.因此 RTSP ... 
- RTSP协议-中文定义
		RTSP协议-中文定义 转自:http://blog.csdn.net/arau_sh/article/details/2982914 E-mail:bryanj@163.com 译者: Bryan. ... 
- Fiddler--一、HTTP协议简介
		在学习Fiddler之前,最好先学习一下HTTP协议. HTTP协议简介 什么是HTTP协议 超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端 ... 
- Monte Carlo方法简介(转载)
		Monte Carlo方法简介(转载) 今天向大家介绍一下我现在主要做的这个东东. Monte Carlo方法又称为随机抽样技巧或统计实验方法,属于计算数学的一个分支,它是在上世纪四十年代 ... 
- RTSP协议媒体数据发包相关的细节
		最近完成了一RTSP代理网关,这是第二次开发做RTSP协议相关的开发工作了,相比11年的简单粗糙的版本,这次在底层TCP/IP通讯和RTSP协议上都有了一些新的积累,这里记录一下.基本的RTSP协议交 ... 
随机推荐
- 《TCP/IP详解卷1:协议》——第6章 ICMP:Internet控制报文协议(转载)
			1.引言 ICMP被认为是IP层的一个组成部分,它传递差错报文以及其他需要注意的信息.ICMP报文通常被IP层或更高层协议(TCP或UDP)使用.一些ICMP报文把差错报文返回给用户进程. ICMP报 ... 
- Flatten Binary Tree to Linked List (DFS)
			Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 6 T ... 
- SAS学习笔记 - R的数据操作
			1.对象 1.1 对象及其内在属性 R中的处理数据就是对象,每个对象可以包含多个元素.对象有两个内在属性:类型和长度.类型是对象元素的基本种类,共四种:数值型,字符型,复数型和逻辑型.对象的类型和长度 ... 
- linux 查找目录下的文件内容并替换(批量)
			2.sed和grep配合 命令:sed -i s/yyyy/xxxx/g `grep yyyy -rl --include="*.txt" ./` 作用:将当前目录(包括子目录)中 ... 
- freemarker 模板
			1 整体结构 模板(FTL 编程)是由例如以下部分混合而成的: Text 文本:文本会照着原样来输出. Interpolation 插值:这部分的输出会被计算的值来替换.插值由${和}所分隔(或者#{ ... 
- 【iOS系列】-UITableViewCell的展开与收缩的实现思路
			UITableViewCell的展开与收缩的实现思路 现在项目中很多地方都会用到,所以我这里介绍一种可以复用的思路,这与文章后面的Swift的实现思路不同,具体大家可自行对比. Demo项目地址 开始 ... 
- C项目实践--俄罗斯方块(2)
			在VS中新建win32 Application Proj,选择Empty ,完成TetrisWin项目创建.新建tetris.c和tetris.h两个文件,打开tetris.h文件. 首先要包括的是可 ... 
- HTML5你必须知道的28个新特性
			1. 新的Doctype 尽管使用<!DOCTYPE html>,即使浏览器不懂这句话也会按照标准模式去渲染 2. Figure元素 用<figure>和<figcapt ... 
- WCF Rest post请求
			只有遇到问题才能解决问题,这个问题之前也遇到过因为没有及时总结所以这个问题又重新出现困扰了我8个小时. ajax 请示WCF Rest 是一个比较成熟的技术.所以 涉及到了几个技术点 1 jquery ... 
- 初识JVM虚拟机
			前言: Java语言里负责解释执行字节码文件的是Java虚拟机,即JVM——Java Virtual Machine(Java虚拟机). 执行Java程序的两个步骤: 由Java语言编写的程序需要进过 ... 
