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

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