rtsp协议简单分析

来源:互联网 发布:2017淘宝店铺重开技术 编辑:程序博客网 时间:2024/05/21 23:32
 
rtsp协议简单分析
2009年03月17日 星期二 14:18
rtsp和http类似,属于应用层协议
通过socket rtsp命令来进行通讯。
常用控制命令执行顺序常用的是5个命令:

1,OPTIONS,//询问server,那些命令可用
2,DESCRIBE,//请求rtsp路径的媒体描述信息
3,SETUP,//设置会话的属性,以及传输模式,建立会话

GET_PARAMETER,//取得流控制参数,可能某些服务器不支持
SET_PARAMETER,//设置流控制参数,可能某些服务器不支持

4,PLAY,//开始播放流媒体数据
5,TEARDOWN //关闭对话
————————————

ANNOUNCE, //更新会话描述
PAUSE,//临时停止流,而不释放服务器资源

client有请求(request),server就有应答(response)
一般控制命令基于tcp协议。媒体数据传输使用udp。

————————————
参考http:和rtsp在功能上有相似重叠的地方,RTSP采用了HTTP/1.1 大多数的状态码,并且增加了RTSP特定的状态码。

HTTP协议定义了8种可能的请求方法:
GET 检索URI中标识资源的一个简单请求
HEAD 与GET方法相同,服务器只返回状态行和头标,并不返回请求文档
POST 服务器接受被写入客户端输出流中的数据的请求
PUT 服务器保存请求数据作为指定URI新内容的请求
DELETE 服务器删除URI中命名的资源的请求
OPTIONS 关于服务器支持的请求方法信息的请求
TRACE Web服务器反馈Http请求和其头标的请求
CONNECT 已文档化但当前未实现的一个方法,预留做隧道处理
————————————
rtsp和http的协议规范分别在RFC2326 和 RFC2616有详细描述

mms协议为微软的私有协议,未公开协议。采用私有自定义控制结构体来发送命令,而不是像http,rtsp协议采用发送文本命令控制。






实例分析:

s:source host
d:dest host

第一步:握手
三次握手,端口554
s->d syn,seq=0,
d-> syn,ack seq=0
s->d ack,seq=1
2,s->d describe

第二步:
发送:
DESCRIBE rtsp://xxxx.rm RTSP/1.0

User-Agent: NSPlayer/9.0.0.2980 guid/51C94674-351C-432F-96E7-4F29052808FB

X-Accept-Authentication: Negotiate, NTLM, Digest, Basic

CSeq: 1


返回片源的pdu:(信息包括片源的版本和描述信息等等
RTSP/1.0 200 OK

Content-Type: application/sdp

Vary: Accept

X-Playlist-Gen-Id: 24517

X-Broadcast-Id: 0

Content-Length: 4634

Date: Thu, 08 Jul 2010 03:51:42 GMT

CSeq: 1

Server: WMServer/9.1.1.3814

Supported: com.microsoft.wm.srvppair, com.microsoft.wm.sswitch, com.microsoft.wm.eosmsg, com.microsoft.wm.fastcache, com.microsoft.wm.packetpairssrc, com.microsoft.wm.startupprofile

Last-Modified: Thu, 20 Sep 2007 13:38:40 GMT

Cache-Control: x-wms-content-size=103215582, max-age=86399, must-revalidate, proxy-revalidate

Etag: "103215582"



v=0

o=- 201007080351420046 201007080351420046 IN IP4 127.0.0.1

s=<No Title>

c=IN IP4 0.0.0.0

b=AS:315

a=maxps:1444

t=0 0

a=control:rtsp://xxx.rm/

a=etag:{3DBB6BB1-8567-725D-2FA4-EEFD8F176BFA}

a=range:npt=5.000-2687.379

a=recvonly

a=pgmpu:data:application/x-wms-contentdesc,8,language,31,0,,44,WMS_CONTENT_DESCRIPTION_SERVER_BRANDING_INFO,31,12,WMServer/9.1,51,WMS_CONTENT_DESCRIPTION_PLAYLIST_ENTRY_START_OFFSET,3,4,5000,47,WMS_CONTENT_DESCRIPTION_PLAYLIST_ENTRY_DURATION,3,7,2682379,58,WMS_CONTENT_DESCRIPTION_COPIED_METADATA_FROM_PLAYLIST_FILE,3,1,1,42,WMS_CONTENT_DESCRIPTION_PLAYLIST_ENTRY_URL,31,30,wwwwxinwen_300_20070920_96.wmv%0D%0A

a=pgmpu:data:application/vnd.ms.wms-hdr.asfv1;base64,MCaydY5mzxGm2QCqAGLObCQKAAAAAAAABwAAAAECodyrjEepzxGO5ADADCBTZWgAAAAAAAAAcZiax3VjwUu1FFL+1SOrpXzyJgYAAAAAkIDvN4r7xwEqFwEAAAAAADB+zUEGAAAAoGbSPgYAAACIEwAAAAAAAAIAAACkBQAApAUAAGDLBAC1A79fLqnPEY7jAMAMIFNlRQcAAAAAAAAR0tOruqnPEY7mAMAMIFNlBgAXBwAAqUZDfODv/EuyKTk+3kFchScAAAAAAAAAAQAMegBoAC0AYwBuAAAAXYvxJoRF7EefXw5lHwRSyRoAAAAAAAAAAgHqy/jFr1t3SIRnqoxE+kzK0AAAAAAAAAAEAAAAAQAuAAMABAAAAFcATQAvAFcATQBBAEQAUgBDAFAAZQBhAGsAUgBlAGYAZQByAGUAbgBjAGUAAADhWQAAAAABADQAAwAEAAAAVwBNAC8AVwBNAEEARABSAEMAQQB2AGUAcgBhAGcAZQBSAGUAZgBlAHIAZQBuAGMAZQAAAJEIAAAAAAEADAACAAIAAABJAHMAVgBCAFIAAAAAAAAAAgAMAAIAAgAAAEkAcwBWAEIAUgAAAAAAdNQGGN/KCUWkupqry5aq6BoFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMul5hRyxjJDg5mpaVIGW1pYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoTgAAiBMAAAAAAAAoTgAAiBMAAAAAAAAtAwAAAgAAAAEAAABogzEAAAAAAAAAAADLpeYUcsYyQ4OZqWlSBltabgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwEUEAIgTAAAAAAAAwEUEAIgTAAAAAAAA2SYAAAIAAAACAAAANbcMAAAAAAAAAAEAUJS9xn+GB0mDo8d5IbczrQIAAAAAACDeqtkXfJxPvCiFVd2Y4qImAAAAAAAAAAAAAAAAAAAAAAAAAAAAQKTQ0gfj0hGX8ACgyV6oUKIAAAAAAAAAAwAcAFcATQBGAFMARABLAFYAZQByAHMAaQBvAG4AAAAAABoAOQAuADAAMAAuADAAMAAuADMAMgA2ADUAAAAaAFcATQBGAFMARABLAE4AZQBlAGQAZQBkAAAAAAAWADAALgAwAC4AMAAuADAAMAAwADAAAAAMAEkAcwBWAEIAUgAAAAIABAAAAAAAkQfct7epzxGO5gDADCBTZXIAAAAAAAAAQJ5p+E1bzxGo/QCAX1xEK1DNw7+PYc8Ri7IAqgC04iAAAAAAAAAAABwAAAAIAAAAAQA4iTgBYQEBACJWAADFCQAALQMQAAoAAEQAABcAtQwAAAEtAy0DAQAAkQfct7epzxGO5gDADCBTZYEAAAAAAAAAwO8ZvE1bzxGo/QCAX1xEKwBX+yBVW88RqP0AgF9cRCsAAAAAAAAAADMAAAAAAAAAAgAAAAAAQAEAAPAAAAACKAAoAAAAQAEAAPAAAAABABgAV01WMQAAAAAAAAAAAAAAAAAAAAAAAAAAznX4e41G0RGNggBgl8misiYAAAAAAAAAAgABAJxZAAACAMRxBABAUtGGHTHQEaOkAKDJA0j2ngAAAAAAAABBUtGGHTHQEaOkAKDJA0j2AgAAAAIAFwBXAGkAbgBkAG8AdwBzACAATQBlAGQAaQBhACAAQQB1AGQAaQBvACAAVgA3AAAAAAACAGEBAQAXAFcAaQBuAGQAbwB3AHMAIABNAGUAZABpAGEAIABWAGkAZABlAG8AIABWADcAAAAAAAQAV01WMTYmsnWOZs8RptkAqgBizmwaqSYGAAAAAHGYmsd1Y8FLtRRS/tUjq6UqFwEAAAAAAAEB

m=audio 0 RTP/AVP 96

b=AS:23

b=X-AV:21

b=RS:0

b=RR:0

a=rtpmap:96 x-asf-pf/1000

a=control:audio

a=stream:1

m=application 0 RTP/AVP 96

b=RS:0

b=RR:0

a=rtpmap:96 x-wms-rtx/1000

a=control:rtx

a=stream:65536

m=video 0 RTP/AVP 96

b=AS:292

b=X-AV:280

b=RS:0

b=RR:0

a=rtpmap:96 x-asf-pf/1000

a=control:video

a=stream:2


第三步:设置传输方式,tcp还是udp,客户端连接的端口
发送:
SETUP rtsp://xxx.rm/audio RTSP/1.0

CSeq: 2

Transport: x-real-rdt/mcast;client_port=6970;mode=play,x-real-rdt/udp;client_port=6970;mode=play,x-pn-tng/udp;client_port=6970;mode=play,RTP/AVP;unicast;client_port=6970-6971;mode=play,x-pn-tng/tcp;mode=play,x-real-rdt/tcp;mode=play,RTP/AVP/TCP;unicast;mode=play
User-Agent: RealMedia Player HelixDNAClient/10.0.1.1070 (win32)

返回:
RTSP/1.0 200 OK

Blocksize: 1464

Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=6b82d10a;mode=PLAY

Date: Thu, 08 Jul 2010 03:51:42 GMT

CSeq: 2

Session: 5664383775462788894;timeout=60

Server: WMServer/9.1.1.3814

Supported: com.microsoft.wm.srvppair, com.microsoft.wm.sswitch, com.microsoft.wm.eosmsg, com.microsoft.wm.fastcache, com.microsoft.wm.packetpairssrc, com.microsoft.wm.startupprofile

Last-Modified: Thu, 20 Sep 2007 13:38:40 GMT

Cache-Control: x-wms-content-size=103215582, max-age=86399, must-revalidate, proxy-revalidate

Etag: "103215582"


第四步:通知服务器要开始播放
发送:
PLAY rtsp://xxxx.rm RTSP/1.0

Session: 5664383775462788894

CSeq: 4

Range: npt=13.605-

Speed: 1000.000

Bandwidth: 2147483647

X-Accelerate-Streaming: AccelDuration=1000000;AccelBandwidth=2147483647


rtsp服务器返回RTP信息:
RTSP/1.0 200 OK

Date: Thu, 08 Jul 2010 03:51:42 GMT

CSeq: 4

Session: 5664383775462788894;timeout=60

Server: WMServer/9.1.1.3814

Supported: com.microsoft.wm.srvppair, com.microsoft.wm.sswitch, com.microsoft.wm.eosmsg, com.microsoft.wm.fastcache, com.microsoft.wm.packetpairssrc, com.microsoft.wm.startupprofile

Range: npt=7.445-2687.379

Scale: 1.000

X-Accelerate-Streaming: AccelBandwidth=3500000;AccelDuration=20000

Speed: 11.138

RTP-Info: url=rtsp://xxxx.rm/audio;seq=59246;rtptime=7445, url=rtsp://xxxx.rm/video;seq=22362;rtptime=7445

第五步:
rtsp server开始约定的seq number数发送RTP数据包

RTP包结构如下:
0                   1                   2                   3    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |V=2|P|X|  CC   |M|     PT      |       sequence number         |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                           timestamp                           |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |           synchronization source (SSRC) identifier            |   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+   |            contributing source (CSRC) identifiers             |   |                             ....                              |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


第六步:RTCP控制协议。在传输过程中通知rtsp server。端口是rtp端口+1
0                   1                   2                   3        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+header |V=2|P|    RC   |   PT=SR=200   |             length            |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |                         SSRC of sender                        |       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+sender |              NTP timestamp, most significant word             |info   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |             NTP timestamp, least significant word             |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |                         RTP timestamp                         |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |                     sender's packet count                     |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |                      sender's octet count                     |       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+report |                 SSRC_1 (SSRC of first source)                 |block  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  1    | fraction lost |       cumulative number of packets lost       |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |           extended highest sequence number received           |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |                      interarrival jitter                      |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |                         last SR (LSR)                         |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |                   delay since last SR (DLSR)                  |       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+report |                 SSRC_2 (SSRC of second source)                |block  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  2    :                               ...                             :       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+       |                  profile-specific extensions                  |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


RTCP和RTP的机制类似FTP的命令端口20和数据端口21的关系。一个走数据一个走控制。
原创粉丝点击