RTSP協議簡介與實現

一、簡介
    RTSP(Real Time Streaming Protocol)被廣泛應用於安防行業,其主要特點是RTSP信令交互與HTTP協議相似,媒體層數據傳輸採用RTP/RTCP協議,支持UDP方式,實時性較好,協議擴展性較好。
    RTSP協議標準由IETF制定,協議文檔:RFC2326

二、協議流程分析

RTSP拉流時序圖:
在這裏插入圖片描述

三、實例分析
實驗環境:
RTSP Client: Windows 10 VLC軟件,IP address: 192.168.3.40
RTSP Server:海康網絡攝像機 IP address:192.168.3.50
VLC拉取一路海康相機的RTSP流,RTSP交互數據如下:

OPTIONS rtsp://192.168.3.50:554 RTSP/1.0
CSeq: 2
User-Agent: LibVLC/3.0.8 (LIVE555 Streaming Media v2016.11.28)

RTSP/1.0 200 OK
CSeq: 2
Public: OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER
Date:  Thu, Jan 01 1970 00:44:43 GMT

DESCRIBE rtsp://192.168.3.50:554 RTSP/1.0
CSeq: 3
User-Agent: LibVLC/3.0.8 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp

RTSP/1.0 401 Unauthorized
CSeq: 3
WWW-Authenticate: Digest realm="IP Camera(C6923)", nonce="4e57333752d64080c4e49c955242bcd9", stale="FALSE"
Date:  Thu, Jan 01 1970 00:44:43 GMT

DESCRIBE rtsp://192.168.3.50:554 RTSP/1.0
CSeq: 4
Authorization: Digest username="admin", realm="IP Camera(C6923)", nonce="4e57333752d64080c4e49c955242bcd9", uri="rtsp://192.168.3.50:554", response="41f4f319bc08a8768fa16afc9d0cd704"
User-Agent: LibVLC/3.0.8 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp

RTSP/1.0 200 OK
CSeq: 4
Content-Type: application/sdp
Content-Base: rtsp://192.168.3.50:554/
Content-Length: 522

v=0
o=- 2683245966 2683245966 IN IP6 ::
s=Media Presentation
e=NONE
b=AS:5050
t=0 0
a=control:rtsp://192.168.3.50:554/
m=video 0 RTP/AVP 96
c=IN IP6 ::
b=AS:5000
a=recvonly
a=x-dimensions:1920,1080
a=control:rtsp://192.168.3.50:554/trackID=1
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=420029; packetization-mode=1; sprop-parameter-sets=Z00AKY2NcDwBE/LCAAAOEAACvyAI,aOpTiA==
a=Media_header:MEDIAINFO=494D4B48010200000400000100000000000000000000000081000000000000000000000000000000;
a=appversion:1.0
SETUP rtsp://192.168.3.50:554/trackID=1 RTSP/1.0
CSeq: 5
Authorization: Digest username="admin", realm="IP Camera(C6923)", nonce="4e57333752d64080c4e49c955242bcd9", uri="rtsp://192.168.3.50:554/", response="e024d07853a1f6ba9c4dbf357016a751"
User-Agent: LibVLC/3.0.8 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=51802-51803

RTSP/1.0 200 OK
CSeq: 5
Session:         74343655;timeout=60
Transport: RTP/AVP;unicast;client_port=51802-51803;server_port=8212-8213;ssrc=51270073;mode="play"
Date:  Thu, Jan 01 1970 00:44:43 GMT

PLAY rtsp://192.168.3.50:554/ RTSP/1.0
CSeq: 6
Authorization: Digest username="admin", realm="IP Camera(C6923)", nonce="4e57333752d64080c4e49c955242bcd9", uri="rtsp://192.168.3.50:554/", response="e141adfc4d90d847f06b54860389e956"
User-Agent: LibVLC/3.0.8 (LIVE555 Streaming Media v2016.11.28)
Session: 74343655
Range: npt=0.000-

RTSP/1.0 200 OK
CSeq: 6
Session:         74343655
RTP-Info: url=rtsp://192.168.3.50:554/trackID=1;seq=17772;rtptime=243065610
Date:  Thu, Jan 01 1970 00:44:43 GMT

四、RTSP Client C++ 實現
播放器軟件數據流圖:
在這裏插入圖片描述
播放器源代碼 github地址https://github.com/v354412101/FFPlayer

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章