流媒体学习2

来源:互联网 发布:在线财神网淘宝店 编辑:程序博客网 时间:2024/06/05 07:39

RTSP重要字段参数

1 Accept

用于指定客户端可以接受的媒体描述信息类型。比如:

Accept: application/rtsl, application/sdp;level=2

2 Bandwidth

用于描述客户端可用的带宽值。

3 CSeq

指定了RTSP请求回应对的序列号,在每个请求或回应中都必须包括这个头字段。对每个包含一个给定序列号的请求消息,都会有一个相同序列号的回应消息。

4 Rang

用于指定一个时间范围,可以使用SMPTE、NTP或clock时间单元。

5 Session

Session头字段标识了一个RTSP会话。Session ID 是由服务器在SETUP的回应中选择的,客户端一当得到Session ID后,在以后的对Session 的操作请求消息中都要包含Session ID.ort:

6 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服务端

1 查询服务器端可用方法

 1.C->S:OPTIONrequest       //询问S有哪些方法可用

1.S->C:OPTIONresponse    //S回应信息的public头字段中包括提供的所有可用方法

2  第二步  得到媒体描述信息

2.C->S:DESCRIBE request      //要求得到S提供的媒体描述信息

2.S->C:DESCRIBE response    //S回应媒体描述信息,一般是sdp信息

3 第三步 建立RTSP会话

3.C->S:SETUPrequest            //通过Transport头字段列出可接受的传输选项,请求S建立会话

3.S->C:SETUPresponse          //S建立会话,通过Transport头字段返回选择的具体转输选项,并返回建立的Session ID;

4 第四步 请求开始传输数据

4.C->S:PLAY request        //C请求S开始发送数据

4.S->C:PLAYresponse            //S回应该请求的信息

5 数据传送播放

S->C:发送流媒体数据    // 通过RTP协议传送数据

6 关闭会话 退出

6.C->S:TEARDOWN request      //C请求关闭会话

6.S->C:TEARDOWN response //S回应该请求

上述的过程只是标准的、友好的rtsp流程,但实际的需求中并不一定按此过程。

其中第三和第四步是必需的!第一步,只要服务器客户端约定好,有哪些方法可用,则option请求可以不要。第二步,如果我们有其他途径得到媒体初始化描述信息(比如http请求等等),则我们也不需要通过rtsp中的describe请求来完成。




原创粉丝点击