1.和服务端建立TCP连接
2.建立会话
使用建立的TCP连接进行会话,会话报文以两个\r\n结尾;
2.1.OPTIONS会话
客户端发送:
OPTIONS rtsp://192.168.58.101/ace_udp_h264_leaac.ts RTSP/1.0
CSeq: 1
User-Agent: LibVLC/3.0.16 (LIVE555 Streaming Media v2018.11.26)
服务端回复:
RTSP/1.0 200 OK
CSeq: 1
Date: 2022-01-06 13:57:00 GMT
Public: OPTIONS, DESCRIBE, ANNOUNCE,SETUP, TEARDOWN, PLAY,RECORD,GET_PARAMETER
2.2.DESCRIBE会话
客户端发起DESCRIBE会话后,服务端将提供流的信息描述,格式符合SDP文件格式;
客户端发送:
DESCRIBE rtsp://192.168.200.245:8010/designated_ch3 RTSP/1.0
CSeq: 2
User-Agent: LibVLC/3.0.16 (LIVE555 Streaming Media v2018.11.26)
Accept: application/sdp
服务端回复:
RTSP/1.0 200 OK
CSeq: 2
Date: 2022-01-06 13:57:00 GMT
Content-Base: rtsp://192.168.200.245:8010/designated_ch3/
Content-Type: application/sdp
Content-Length: 154
v=0
o=- 0 0 IN IP4 127.0.0.1
s=.........
c=IN IP4 127.0.0.1
t=0 0
a=tool:libavformat 58.29.100
m=audio 0 RTP/AVP 14
b=AS:32
a=control:streamid=0
2.3.SETUP会话
SETUP会话完成后,服务端会分配唯一的会话标识ID,此后的会话都需要携带该会话标识ID;
客户端拉流采用RTSP(OVER TCP)还是RTSP(OVER UDP),或者其他方式(此处不扩展),是由客户端和服务端协商确定的。由客户端主动发起协商方式,如果服务端支持则回复成功,如果服务端回复不支持,则客户端应更换其他方式再次进行尝试;
RTSPOVER_TCP_57">2.3.1.RTSP(OVER TCP)
客户端发送:
SETUP rtsp://192.168.200.245:8010/designated_ch3/streamid=0 RTSP/1.0
CSeq: 3
User-Agent: LibVLC/3.0.16 (LIVE555 Streaming Media v2018.11.26)
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
服务端回复:
RTSP/1.0 200 OK
CSeq: 3
Date: 2022-01-06 14:20:08 GMT
Transport:RTP/AVP/TCP;unicast;interleaved=01;destination=192.168.200.245;source=192.168.200.245;
Session: 0xa2fd474a
RTSPOVER_UDP_73">2.3.2.RTSP(OVER UDP)
服务端回复的server_port=51006-51007,分别为服务端的RTP和RTCP的数据发送端口
客户端发送:
SETUP rtsp://192.168.200.245:8010/designated_ch3/streamid=0 RTSP/1.0
CSeq: 3
User-Agent: LibVLC/3.0.16 (LIVE555 Streaming Media v2018.11.26)
Transport: RTP/AVP;unicast;client_port=41320-41321
服务端回复:
RTSP/1.0 200 OK
CSeq: 3
Date: 2022-01-06 13:57:00 GMT
Transport: RTP/AVP;unicast;client_port=41320-41321;destination=192.168.200.245;source=192.168.200.245;server_port=51006-51007
Session: 0xa2fd474d
2.4.PLAY会话
客户端发送:
PLAY rtsp://192.168.200.245:8010/designated_ch3/ RTSP/1.0
CSeq: 4
User-Agent: LibVLC/3.0.16 (LIVE555 Streaming Media v2018.11.26)
Session: 0xa2fd474d
Range: npt=0.000-
服务端回复:
RTSP/1.0 200 OK
CSeq: 4
Date: 2022-01-06 13:57:00 GMT
Range: npt=0.000-
Session: 0xa2fd474d
RTP-Info: url=rtsp://192.168.200.245:8010/designated_ch3//track1;seq=0;rtptime=0
3.数据接收
数据封装见文章RTP和RTCP讲解
RTSPOVER_TCP_113">3.1.RTSP(OVER TCP)
- 使用TCP连接进行数据接收;
- 使用TCP连接进行会话,无需定时进行心跳发送;
RTSPOVER_UDP_118">3.2.RTSP(OVER UDP)
- 使用SETUP会话中,服务端回复的server_port=51006-51007,基于UDP协议分别进行RTP和RTCP数据的接收;
- 使用TCP连接进行会话,要求定时进行心跳发送,保持会话连接;
4.断开会话
客户端发送:
TEARDOWN rtsp://192.168.200.245:8010/designated_ch3/ RTSP/1.0
CSeq: 5
User-Agent: LibVLC/3.0.16 (LIVE555 Streaming Media v2018.11.26)
Session: 0xa2fd474d
服务端回复:
RTSP/1.0 200 OK
CSeq: 5
Date: 2022-01-06 13:57:03 GMT
Session: 0xa2fd474d