开源C++ RTSP客户端(支持RTP Over TCP)

QuickGBLink开源的这个RTSP客户端是用C++写的,目前仅实现了RTP Over TCP传输。支持接收多种视音频格式的流,视频格式支持MPEG4、H264、H265,音频格式支持AAC、AMR、MP3。实现了RTSP的用户认证登录(带用户名和密码)、解析SDP、发心跳保活、RTCP包处理。设备兼容性好,目前已经在多个不同品牌的IPC上做过测试,能稳定出流。

该客户端不只是接收RTSP/RTP流,还是一个功能完善的流媒体播放器,带一个精简的UI,界面是用MFC写的,支持解码音视频和播放视频、声音。

Github下载地址: https://github.com/QuickGBLink88/RTSPClient

使用方法:

打开程序目录下的Config.ini配置文件,设置URL地址,URL为RTSP流服务器的地址。如下图所示。然后,点击播放器界面菜单栏的“文件”-》“连接服务器”,则客户端开始连接服务器,并接收流和播放。

开源C++ RTSP客户端(支持RTP Over TCP)_第1张图片

下面是客户端与海康IPC的RTSP交互报文:

OPTIONS rtsp://192.168.0.64/stream1 RTSP/1.0
CSeq: 1
User-Agent: QuickGBLink V201911 

RTSP/1.0 200 OK
CSeq: 1
Public: OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER
Date:  Wed, Dec 04 2019 10:40:37 GMT

DESCRIBE rtsp://192.168.0.64/stream1 RTSP/1.0
CSeq: 2
Accept: application/sdp
User-Agent: QuickGBLink V201911 

RTSP/1.0 401 Unauthorized
CSeq: 2
WWW-Authenticate: Digest realm="IP Camera(14045)", nonce="d9d6f0877ecaebd283874d80ec6c1ce2", stale="FALSE"
Date:  Wed, Dec 04 2019 10:40:37 GMT

DESCRIBE rtsp://192.168.0.64/stream1 RTSP/1.0
CSeq: 3
Accept: application/sdp
User-Agent: QuickGBLink V201911 
Authorization: Digest username="admin", realm="IP Camera(14045)", nonce="d9d6f0877ecaebd283874d80ec6c1ce2", uri="rtsp://192.168.0.64/stream1", response="cfcdca45085180fc0ab25c9b54a9ec07"

RTSP/1.0 200 OK
CSeq: 3
Content-Type: application/sdp
Content-Base: rtsp://192.168.0.64/stream1/
Content-Length: 865

v=0
o=- 1575456037872535 1575456037872535 IN IP4 192.168.0.64
s=Media Presentation
e=NONE
b=AS:5100
t=0 0
a=control:rtsp://192.168.0.64/stream1/
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:5000
a=recvonly
a=x-dimensions:1280,720
a=control:rtsp://192.168.0.64/stream1/trackID=1
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=420029; packetization-mode=1; sprop-parameter-sets=Z2QAH62EAQwgCGEAQwgCGEAQwgCEO1AoAt03AQEBQAAAAwBAAAAHoQ==,aO48sA==
m=audio 0 RTP/AVP 104
c=IN IP4 0.0.0.0
b=AS:50
a=recvonly
a=control:rtsp://192.168.0.64/stream1/trackID=2
a=rtpmap:104 mpeg4-generic/16000/1
a=fmtp:104 profile-level-id=15; streamtype=5; mode=AAC-hbr; config=1408;SizeLength=13; IndexLength=3; IndexDeltaLength=3; Profile=1;
a=Media_header:MEDIAINFO=494D4B48010200000400000101200110803E0000007D000000000000000000000000000000000000;
a=appversion:1.0
SETUP rtsp://192.168.0.64/stream1/trackID=1 RTSP/1.0
CSeq: 4
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
User-Agent: QuickGBLink V201911 
Authorization: Digest username="admin", realm="IP Camera(14045)", nonce="d9d6f0877ecaebd283874d80ec6c1ce2", uri="rtsp://192.168.0.64/stream1", response="9adb398d3e69d58460b235857d069ce1"

RTSP/1.0 200 OK
CSeq: 4
Session:        926638791;timeout=60
Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=3fb7e1f5;mode="play"
Date:  Wed, Dec 04 2019 10:40:37 GMT

SETUP rtsp://192.168.0.64/stream1/trackID=2 RTSP/1.0
CSeq: 5
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
User-Agent: QuickGBLink V201911 
Session: 926638791
Authorization: Digest username="admin", realm="IP Camera(14045)", nonce="d9d6f0877ecaebd283874d80ec6c1ce2", uri="rtsp://192.168.0.64/stream1", response="9adb398d3e69d58460b235857d069ce1"

RTSP/1.0 200 OK
CSeq: 5
Session:        926638791;timeout=60
Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=45fdf2b3;mode="play"
Date:  Wed, Dec 04 2019 10:40:37 GMT

PLAY rtsp://192.168.0.64/stream1/ RTSP/1.0
CSeq: 6
Session: 926638791
Range: npt=0-
User-Agent: QuickGBLink V201911 
Authorization: Digest username="admin", realm="IP Camera(14045)", nonce="d9d6f0877ecaebd283874d80ec6c1ce2", uri="rtsp://192.168.0.64/stream1", response="7a59ac4157faf72cdcabdb25329bbdc4"

RTSP/1.0 200 OK
CSeq: 6
Session:        926638791
RTP-Info: url=rtsp://192.168.0.64/stream1/trackID=1;seq=38418;rtptime=18027180,url=rtsp://192.168.0.64/stream1/trackID=2;seq=8243;rtptime=3205568
Date:  Wed, Dec 04 2019 10:40:38 GMT
 

 

你可能感兴趣的:(开源,安防,RTSP播放器)