CSeq: 指定了RTSP请求回应对的序列号,在每个请求或回应中都必须包括这个头字段。对每个包含一个给定序列号的请求消息,都会有一个相同序列号的回应消息。
Rang: 用于指定一个时间范围,可以使用SMPTE、NTP或clock时间单元。
Session: Session头字段标识了一个RTSP会话。Session ID 是由服务器在SETUP的回应中选择的,客户端一当得到Session ID后,在以后的对Session 的操作请求消息中都要包含Session ID.
Transport: Transport头字段包含客户端可以接受的转输选项列表,包括传输协议,地址端口,TTL等。服务器端也通过这个头字段返回实际选择的具体选项。如: Transport: RTP/AVP;multicast;ttl=127;mode="PLAY", RTP/AVP;unicast;client_port=3456-3457;mode="PLAY"
简单的RTSP消息交互过程C表示RTSP客户端,S表示RTSP服务端
第一步:查询服务器端可用方法
C->S OPTION request //询问S有哪些方法可用
S->C OPTION response //S回应信息的public头字段中包括提供的所有可用方法
第二步:得到媒体描述信息
C->S DESCRIBE request //要求得到S提供的媒体描述信息
S->C DESCRIBE response //S回应媒体描述信息,一般是sdp信息
第三步:建立RTSP会话
C->S SETUP request //通过Transport头字段列出可接受的传输选项,请求S建立会话
S->C SETUP response //S建立会话,通过Transport头字段返回选择的具体转输选项,并返回建立的Session ID;
第四步:请求开始传送数据
C->S PLAY request //C请求S开始发送数据
S->C PLAY response //S回应该请求的信息
第五步: 数据传送播放中
S->C 发送流媒体数据 // 通过RTP协议传送数据
第六步:关闭会话,退出
C->S EARDOWN request //C请求关闭会话
S->C TEARDOWN response //S回应该请求