打算自己写一个最小的RTSP协议,在写之前,需要明白RTSP的工作流程。在本实例中,使用live555建立一个RTSP服务端,然后使用VLC来播放该实时流。使用Wireshark 工具抓取RTSP实时数据包进行分析。一次完整的数据请求到数据断开的网络包如下:

首先看到TCP建立连接的三次握手:

后面的报文客户端发送:OPTIONS,DESCRIBE,SETUP,PLAY,GET_PARAMETER,TEADOWN命令,跟着服务端给出应答Reply。
这里需要注意一下
如下图:

(3)在客户端发送了SETUP命令的时候,服务端会把RTP,RTCP 的端口等信息发送给客户端,客户端根据RTP端口接收媒体数据,根据RTCP端口来收发RTCP报文。rtsp协议 实例

从上面的图中我们可以知道,服务端的RTP和RTCP是进行组播(多播),不管是否有客户端连接,它都在不断的发送RTP数据和RTCP包
完整的TCP0数据流如下:
OPTIONSrtsp://192.168.0.6:8554/testStream RTSP/1.0
CSeq: 2
User-Agent:LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
RTSP/1.0 200 OK
CSeq: 2
Date: Wed, Apr 19 2017 07:19:58 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE,GET_PARAMETER, SET_PARAMETER
DESCRIBErtsp://192.168.0.6:8554/testStream RTSP/1.0
CSeq: 3
User-Agent:LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Accept:application/sdp
RTSP/1.0 200 OK
CSeq: 3
Date: Wed, Apr 19 2017 07:19:58 GMT
Content-Base: rtsp://192.168.0.6:8554/testStream/
Content-Type: application/sdp
Content-Length: 589
v=0
o=- 1492582839519264 1 IN IP4 192.168.0.6

s=Session streamed by "testH264VideoStreamer"
i=test.264
t=0 0
a=tool:LIVE555 Streaming Media v2017.04.10
a=type:broadcast
a=control:*
a=source-filter: incl IN IP4 * 192.168.0.6
a=rtcp-unicast: reflection
a=range:npt=0-
a=x-qt-text-nam:Session streamed by"testH264VideoStreamer"
a=x-qt-text-inf:test.264
m=video 18888 RTP/P 96
c=IN IP4 232.124.3.140/255
b=AS:500
a=rtpmap:96 H264/90000
a=fmtp:96packetization-mode=1;profile-level-id=640015;sprop-parameter-sets=Z2QAFazZQeCmwEQAAAMBkAAAL2g8WLZY,aOvssiw=
a=control:track1
SETUPrtsp://192.168.0.6:8554/testStream/track1 RTSP/1.0
CSeq: 4
User-Agent:LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Transport:RTP/P;multicast;port=18888-18889
RTSP/1.0 200 OK
CSeq: 4
Date: Wed, Apr 19 2017 07:19:58 GMT
Transport: RTP/P;multicast;destination=232.124.3.140;source=192.168.0.6;port=18888-18889;ttl=255
Session: F0A4CFA5;timeout=65
PLAYrtsp://192.168.0.6:8554/testStream/ RTSP/1.0
CSeq: 5
User-Agent:LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Session:F0A4CFA5
Range:npt=0.000-

RTSP/1.0 200 OK
CSeq: 5
Date: Wed, Apr 19 2017 07:19:58 GMT
Range: npt=0.000-
Session: F0A4CFA5
RTP-Info:url=rtsp://192.168.0.6:8554/testStream/track1;seq=2113;rtptime=1912619744
GET_PARAMETERrtsp://192.168.0.6:8554/testStream/ RTSP/1.0
CSeq: 6
User-Agent:LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Session:F0A4CFA5
RTSP/1.0 200 OK
CSeq: 6
Date: Wed, Apr 19 2017 07:19:58 GMT
Session: F0A4CFA5
Content-Length: 10
2017.04.10GET_PARAMETERrtsp://192.168.0.6:8554/testStream/ RTSP/1.0
CSeq: 7
User-Agent:LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Session:F0A4CFA5
RTSP/1.0 200 OK
CSeq: 7
Date: Wed, Apr 19 2017 07:21:01 GMT
Session: F0A4CFA5
Content-Length: 10
2017.04.10TEARDOWNrtsp://192.168.0.6:8554/testStream/ RTSP/1.0
CSeq: 8
User-Agent:LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Session:F0A4CFA5
RTSP/1.0 200 OK
CSeq: 8
Date: Wed, Apr 19 2017 07:21:07 GMT
完整数据以及Wireshark 文件可以在这里下载:RTSP 数据包实例分析
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-47687-1.html
老美如果没多少牌了
质检总局都买不着真货