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.0CSeq: 2User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)RTSP/1.0 200 OKCSeq: 2Date: Sat, Jan 10 2004 17:24:26 GMTPublic: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SET_PARAMETERDESCRIBE rtsp://192.168.0.31/stream1 RTSP/1.0CSeq: 3User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)Accept: application/sdpRTSP/1.0 200 OKCSeq: 3Date: Sat, Jan 10 2004 17:24:26 GMTContent-Base: rtsp://192.168.0.31/stream1/Content-Type: application/sdpContent-Length: 530v=0o=- 1073741837187046 1 IN IP4 192.168.0.31s=Session streamed by "Live555 RTSP Server"i=stream1t=0 0a=tool:LIVE555 Streaming Media v2011.03.14a=type:broadcasta=control:*a=range:npt=0-a=x-qt-text-nam:Session streamed by "Live555 RTSP Server"a=x-qt-text-inf:stream1m=video 0 RTP/AVP 96c=IN IP4 0.0.0.0b=AS:500a=rtpmap:96 h264/90000a=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.0CSeq: 4User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)Transport: RTP/AVP;unicast;client_port=55264-55265RTSP/1.0 200 OKCSeq: 4Date: Sat, Jan 10 2004 17:24:27 GMTTransport: RTP/AVP;unicast;destination=192.168.0.241;source=192.168.0.31;client_port=55264-55265;server_port=6970-6971Session: 02C4C123PLAY rtsp://192.168.0.31/stream1/ RTSP/1.0CSeq: 5User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)Session: 02C4C123Range: npt=0.000-RTSP/1.0 200 OKCSeq: 5Date: Sat, Jan 10 2004 17:24:27 GMTRange: npt=0.000-Session: 02C4C123RTP-Info: url=rtsp://192.168.0.31/stream1/track1;seq=40607;rtptime=2240021636TEARDOWN rtsp://192.168.0.31/stream1/ RTSP/1.0CSeq: 6User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)Session: 02C4C123RTSP/1.0 200 OKCSeq: 6Date: Sat, Jan 10 2004 17:24:30 GMT
參考資料