2017年10月6日 星期五

5 RTSP

  • 實時流協定(Real Time Streaming Protocol,RTSP


下列為交握步驟

 OPTIONS
 DESCRIBE
 ANNOUNCE (ignore)
 SETUP
 PLAY
 PAUSE (ignore)
 TEARDOWN
 GET_PARAMETER
 SET_PARAMETER
 REDIRECT (ignore)
 RECORD (ignore)







OPTIONS 請求
OPTIONS請求返回server 支援的method (上面那些步驟)。

C -> S :
OPTIONS rtsp://192.168.0.23:554/live.sdp RTSP/1.0
CSeq: 1 User-Agent: HUNT

S -> C :
      RTSP/1.0 200 OK
CSeq: 1
Date: Mon, 6 Mar 2000 1:16:50 GMT
Public: OPTIONS, DESCRIBE, PLAY, SETUP, GET_PARAMETER, SET_PARAMETER, TEARDOWN


DESCRIBE 請求
      該回覆包括呈現描述,通常以對談描述協定(SDP)格式SDP 訊息包含 Session description、Time description、 Media description,主要需要得知Media description內的video , audio 編碼方式以及其他資訊(如h264 的 sps,pps等)


SDP 格式可參考 : Albert 筆記


C -> S :
DESCRIBE rtsp://192.168.0.23:554/live.sdp RTSP/1.0
CSeq: 2
User-Agent: HUNT
S -> C :
RTSP/1.0 200 OK
CSeq: 2
Date: Mon, 6 Mar 2000 1:16:50 GMT
Content-Base: rtsp://192.168.0.23/live.sdp/
Content-Type: application/sdp
Content-Length: 461

 o=RTSP 952305410 424 IN IP4 0.0.0.0
s=RTSP server
c=IN IP4 0.0.0.0
t=0 0
a=charset:Shift_JIS
a=range:npt=0-
a=control:*
a=etag:1234567890
m=video 0 RTP/AVP 98  //m表示media為video ,RTP傳輸 
b=AS:0
a=rtpmap:98 H264/90000 //H264為Decode , 90000: timestamp 單位
a=control:trackID=1  //為SETUP method url為 trackID=1 
a=fmtp:\
98 packetization-mode=1;\
profile-level-id=4d0028;\
sprop-parameter-sets=Z00AKNoB4AiflQ==,aO48gA== 
       //以本例(H264)而言
       //主要使用sps, pps來記錄
       //sps為 Z00AKNoB4AiflQ==
       //Pps為 aO48gA==

m=audio 0 RTP/AVP 97 b=AS:13 //m表示media為audio ,RTP傳輸 
a=rtpmap:97 AMR/8000
a=control:trackID=6
a=maxptime:200
a=fmtp:97 decode_buf=400;octet-align=1


SETUP 請求

SETUP請求指定如何傳輸單個媒體流。這必須在傳送PLAY請求之前完成。

C -> S : 
SETUP rtsp://192.168.0.23/live.sdp/trackID=6 
RTSP/1.0 Transport: RTP/AVP/TCP;unicast;interleaved=2-3
CSeq: 3 
User-Agent: HUNT 
  
S -> C :
RTSP/1.0 200 OK
CSeq: 3
Date: Mon, 6 Mar 2000 1:16:50 GMT
Session: 182264145;timeout=80

Transport: RTP/AVP/TCP;interleaved=2-3;unicast;mode=play





Play 播放請求
Play 播放請求 將導致播放一個或所有媒體流。可以通過傳送多個播放請求來堆疊播放請求。
      在此指定撥放時間, 我們的case是不斷收stream, 因此 npt-0.000-  (不限時間)
      可以指定範圍。如果沒有指定範圍,流將從頭開始播放,並播放到最後,或者如果流暫停,則在暫停點恢復播放。

C -> S :
PLAY rtsp://192.168.0.23/live.sdp/ RTSP/1.0
Range: npt=0.000-
CSeq: 4
User-Agent: HUNT
Session: 182264145

S -> C :
RTSP/1.0 200 OK
CSeq: 4
Date: Mon, 6 Mar 2000 1:16:50 GMT
Session: 182264145;timeout=80
RTP-Info: url=rtsp://192.168.0.23/live.sdp/trackID=6;seq=0;rtptime=0





TEARDOWN 停止發布流請求
TEARDOWN 請求用於終止對談。它停止所有媒體流,並釋放所有與對談相關的資料在伺服器上。


C->S: TEARDOWN rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 8
      Session: 12345678

S->C: RTSP/1.0 200 OK
      CSeq: 8

面試:

Timestamp 用途?


open path:

rtsp://195.200.199.8/mpeg4/media.amp


參考:
https://zh.wikipedia.org/wiki/%E5%8D%B3%E6%99%82%E4%B8%B2%E6%B5%81%E5%8D%94%E5%AE%9A

沒有留言:

張貼留言