RTSP协议简介:
RTSP(Real Time Streaming Prcotol)是位于TCP\IP体系应用层的数据传输协议,通常的RTSP协议包含 RTSP、RTP、RTCP协议。
一般而言:RTSP负责服务器与客户端之间的请求与响应
RTP负责服务器、客户端之间传输媒体数据
RTCP负责提供有关于RTP传输质量的反馈、确保传输的质量
(RTP默认为用偶数的端口传输数据;RTCP则使用下一个奇数的端口传输数据)
RTSP并不传输,而是借助于RTP协议进行数据传输
RTSP媒体服务协议框架:
RTSP报文类型:
请求报文:
常用方法:
OPTIONS: 获取服务器可提供的方法
DESCRIBE: 得到会话描述信息
SETUP:客户端请求建立会话,并确立传输模式
TEARDOWN: 客户端发起关闭会话请求
PLAY:客户端发起播放请求
RTSP的一次基本的交互过程:
C->S option request 客户端询问服务器有哪些可用的方法
S->C option response 服务器回应可用的方法
C->S DESCRIBE request 客户端请求服务器所传输媒体数据的初始化信息
S->C DESCRIBE response 服务器回应媒体数据的初始化信息(基本为SDP协议)
SDP(session describe protocol)会话描述协议,(一次网络会议、视频聊天都称为一次会话),通过该协议,通信双方可以得知:支持视频编码器、网络信息、等。
C->S SETUP request 客户端端设置会话属性以及传输模式,请求建立会话
S->C SETUP response 服务器建立会话,返回会话标识以及相关信息
C->S PLAY request 客户端请求播放
S->C 数据传输 发送数据
C->S TEARDOWN request 客户端请求关闭会话
S->C TEARDOWN response 服务器回应关闭会话请求
描述:当客户端连接到服务器后,发送一个DESCRIBE request,服务器通过SDP反馈流数量、媒体类型等信息;
客户端根据SDP的信息,为会话中的每个流向服务器发送一个SETUPRE request,告诉其接收数据的端口;
服务器发送SETUP response建立连接后,开始发送媒体数据(RTP包。
且在播放的过程中,客户端可以向服务器发送请求从而实现快进、快退、暂停等功能,结束时客户端向服务器发送TEARDOWN request结束流媒体会话。
各个方法的交互实例:
option:
请求:
OPTIONS rtsp://192.168.1.431:554 RTSP/1.0\r\n
CSeq: 1\r\n
User-Agent: Lavf58.42.100\r\
各个字段解释:
OPTIONS : 标识请求命令的类型; rtsp url :请求服务器的URL
RTSP、1.0:标识了RTSP的版本号
CSeq:数据包序号,由于OPTION为第一个指令,所以为1
User-Agent:用户代理,让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。
回复:
RTSP/1.0 200 OK\r\n
CSeq: 1\r\n
Public: OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER\r\n
Date: Fri, Apr 10 2020 19:07:19 GMT\r\n
public:描述服务器所提供的方法; Date:标识日期;
describe:
用于向服务器请求会话描述信息(SDP)
请求类型、 服务器地址、版本
Accept:表示接受的数据格式,application/sdp表示接收sdp消息
CSeq:数据包序号,describe为2
请求:
DESCRIBE rtsp://192.17.1.63:554 RTSP/1.0
Accept: application/sdp
CSeq: 2
User-Agent: Lavf58.42.100
回复:
RTSP/1.0 401 Unauthorized
CSeq: 2
WWW-Authenticate: Digest realm="IP Camera(23306)", nonce="a946c352dd3ad04cf9830d5e72ffb11e", stale="FALSE"
Date: Fri, Apr 10 2020 19:07:19 GMT
setup:
请求:
SETUP rtsp://192.17.1.63:554/trackID=1 RTSP/1.0
Transport: RTP/AVP/UDP;unicast;client_port=26968-26969
CSeq: 4
User-Agent: Lavf58.42.100
Authorization: Digest username="admin", realm="IP Camera(23306)", nonce="a946c352dd3ad04cf9830d5e72ffb11e", uri="rtsp://192.17.1.63:554/trackID=1", response="e29ca030062df6022faa77fefde40b28"
回复:
RTSP/1.0 200 OK
CSeq: 4
Session: 337474243;timeout=60
Transport: RTP/AVP/UDP;unicast;client_port=26968-26969;server_port=8284-8285;ssrc=4a7fb757;mode="play"
Date: Tue, JAN 10 2023 19:07:19 GMT
RTP协议简介
主要负责对于网络数据按照RTP数据包格式进行封包,并根据绑定的协议进行实时传输
数据传输流程:
RTP报头格式
首部结构体: