2012年5月31日 星期四

RTSP例子


RTSP是一個用來建立並控制終端間的媒體會談的協議。

RTSP 在語法和操作上與 HTTP/1.1 類似,因此 HTTP 的擴展機制在多數情況下可加入 RTSP
預設的傳輸埠號為 554 。

以下以一個例子說明 RTSP的運作過程。
假設情境為用戶C 想要觀看媒體伺服器 A 與 V上的影片,而對應的媒體描述則是放在伺服器W。



一、詢問伺服器支援哪些RTSP方法

C->S:  OPTIONS rtsp://www.example.com/media.mp4 RTSP/1.0
       CSeq: 1
       Require: implicit-play
       Proxy-Require: gzipped-messages

S->C:  RTSP/1.0 200 OK
       CSeq: 1
       Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE

RFC2326 定義了以下方法:
DESCRIBE, ANNOUNCE, GET_PARAMETER, OPTIONS, PAUSE, PLAY, RECORD, REDIRECT, SETUP, SET_PARAMETER, TEARDOWN

二、用戶端要求某個連結的描述(SDP),此連結可以使用 RTSP 或是使用 HTTP

C->W
DESCRIBE rtsp://audio.example.com/twister/audio.en RTSP/1.0
CSeq: 2

W->C
RTSP/1.0 200 OK
CSeq: 2
v=0
o=- 2890844526 2890842807 IN IP4 192.16.24.202
s=RTSP Session
m=audio 0 RTP/AVP 0
a=control:rtsp://audio.example.com/twister/audio.en
m=video 0 RTP/AVP 31
a=control:rtsp://video.example.com/twister/video


三、用戶端設定 RTSP 連線

C->A
SETUP rtsp://audio.example.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

四、用戶端設定 RTSP 連線

C->V
SETUP rtsp://video.example.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

五、用戶端要求伺服器V 開始傳送影片

C->V
PLAY rtsp://video.example.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.example.com/twister/video;
seq=12312232;rtptime=78712811

六、用戶端要求伺服器A 開始傳送聲音

C->A
PLAY rtsp://audio.example.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.example.com/twister/audio.en;
seq=876655;rtptime=1032181

七、用戶端中斷連線

C->A:
TEARDOWN rtsp://audio.example.com/twister/audio.en RTSP/1.0
CSeq: 3
Session: 12345678

A->C: 
RTSP/1.0 200 OK
CSeq: 3


下面是透過 VLC player 與 IP camera 的溝通過程

OPTIONS rtsp://192.168.0.31/stream1 RTSP/1.0
CSeq: 2
User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)

RTSP/1.0 200 OK
CSeq: 2
Date: Sat, Jan 10 2004 17:24:26 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SET_PARAMETER

DESCRIBE rtsp://192.168.0.31/stream1 RTSP/1.0
CSeq: 3
User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)
Accept: application/sdp

RTSP/1.0 200 OK
CSeq: 3
Date: Sat, Jan 10 2004 17:24:26 GMT
Content-Base: rtsp://192.168.0.31/stream1/
Content-Type: application/sdp
Content-Length: 530

v=0
o=- 1073741837187046 1 IN IP4 192.168.0.31
s=Session streamed by "Live555 RTSP Server"
i=stream1
t=0 0
a=tool:LIVE555 Streaming Media v2011.03.14
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:Session streamed by "Live555 RTSP Server"
a=x-qt-text-inf:stream1
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:500
a=rtpmap:96 h264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=4D0029;sprop-parameter-sets=Z00AKZpigPAET8uAtQEBAUAAAPoAADqYOhgA9CAAA7msrvLjQwAehAAAdzWV3lwo,aO48gA==
a=control:track1

SETUP rtsp://192.168.0.31/stream1/track1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)
Transport: RTP/AVP;unicast;client_port=55264-55265

RTSP/1.0 200 OK
CSeq: 4
Date: Sat, Jan 10 2004 17:24:27 GMT
Transport: RTP/AVP;unicast;destination=192.168.0.241;source=192.168.0.31;client_port=55264-55265;server_port=6970-6971
Session: 02C4C123

PLAY rtsp://192.168.0.31/stream1/ RTSP/1.0
CSeq: 5
User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)
Session: 02C4C123
Range: npt=0.000-

RTSP/1.0 200 OK
CSeq: 5
Date: Sat, Jan 10 2004 17:24:27 GMT
Range: npt=0.000-
Session: 02C4C123
RTP-Info: url=rtsp://192.168.0.31/stream1/track1;seq=40607;rtptime=2240021636

TEARDOWN rtsp://192.168.0.31/stream1/ RTSP/1.0
CSeq: 6
User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)
Session: 02C4C123

RTSP/1.0 200 OK
CSeq: 6
Date: Sat, Jan 10 2004 17:24:30 GMT

參考資料
  1. RFC 2326
  2. http://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol
  3. 成大的課程