1.RTSP协议
rtsp,英文全称 Real Time Streaming Protocol,RFC2326,实时流传输协议,是 TCP/IP 协议体系中的一个应用层协议。
RTSP 交互流程
1**)**OPTIONS
C--->S
客户端向服务器端发现 OPTIONS,请求可用的方法。
S--->C
服务器端回复客户端,消息中包含当前可用的方法。
2**)**DESCRIBE
C--->S
客户端向服务器请求媒体描述文件,一般通过 rtsp 开头的 url 来发起请求,格式为 sdp。
S--->C
服务器回复客户端 sdp 文件,该文件告诉客户端服务器有哪些音视频流,有什么属性,如编
解码器信息,帧率等。
3**)**SETUP
为音视频数据的传输准备通道
C--->S
客户端向服务器端发起建立连接请求,请求建立会话连接,准备开始接收音视频数据,
请求信息描述了期望音视频数据包基于 UDP 还是 TCP 传输,指定了 RTP,RTCP 端口,以及
是单播还是组播等信息!
S--->C
服务器端收到客户端请求后,根据客户端请求的端口号确定发送控制数据的端口以及音
视频数据的端口!
4**)**PLAY
C--->S
客户端向服务端请求播放媒体。
S--->C
服务器回复客户端 200 OK! 之后开始通过 SETUP 中指定的端口开始发送数据!
5**)**TEARDOWN
C---->S
结束播放的时候,客户端向服务器端发起结束请求
S--->C
服务端收到消息后,向客户端发送 200 OK,之后断开连接
上述的流程基本涵盖了 RTSP 的流程,当然,RTSP 除此之外,还有 PAUSE,SCALE,
GET_PARAMETER,SET_PARAMETER 等参数。
RTSP 的消息有两大类,一是请求消息,一是回应消息,两种消息的格式不同。
请求消息格式:
方法URI RTSP版本****CR LF
消息头****CR LF CR LF
消息体****CR LF
回应消息格式:
RTSP版本 状态码 解释CR LF
消息头****CR LF CR LF
消息体****CR LF
2.RTP协议
RTP:(Real-time Transport Protocol)是用于 Internet 上针对多媒体数据流的一种传输层协议.RTP 协议和 RTCP 一起使用。
RTP 不像 http 和 ftp 可完整的下载整个影视文件,它是以固定的数据率在网络上发送数据,客户端也是按照这种速度观看影视文件,当影视画面播放过后,就不可以再重复播放,除非重新向服务器端要求数据。RTP 的典型应用建立在****UDP上,但也可以在 TCP 或 ATM 等其他协议之上工作。RTP 本身只保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠 RTCP 提供这些服务。
3.RTCP协议
RTCP:实时传输控制协议,是实时传输协议(RTP)的一个姐妹协议.
RTCP 负责管理传输质量在当前应用进程之间交换控制信息。在 RTP 会话期间,各参与者周期性地传送 RTCP 包,包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料。因此,服务器可以利用这些信息动态地改变传输速率,甚
至改变有效载荷类型。RTP 和 RTCP 配合使用,能以有效的反馈和最小的开销使传输效率最佳化,故特别适合传送网上的实时数据。
当应用程序开始一个 rtp 会话时将使用两个端口:一个给 rtp,一个给 rtcp。
rtp 本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠 rtcp 提供这些服务。在 rtp 的会话之间周期的发放一些 rtcp 包以用来传监听服务质量和交换会话用户信息等功能。rtcp 包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料。因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。rtp 和rtcp 配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。根据用户间的数据传输反馈信息,可以制定流量控制的策略,而会话用户信息的交互,可以制定会话控制的策略。