流媒体传输协议之RTSP协议

2022-03-07 10:45:00 浏览数 (1)

rtsp实时流协议

1、rtsp协议用于控制具有实时性的数据(例如多媒体流) 的传送,对媒体流提供了诸如开始、暂停、快进等控制功能

2、它本身并不传输数据。它体系结构上在RTP/RTCP协议之上,传输协议可多选(如TCPUDP组播udptcp)

3、RTSP是一个基于文本的协议,它的语法和操作上跟HTTP1.1类似,且都是纯文本协议,但它们也有区别:

  • RTSP是有状态的,它命令总是按照顺序来发送,其中某个命令可能需要总在另外一个命令之前要发送。而http则是无状态,协议在发送一个命令以后,连接就会断开,且命令之间是没有依赖性的。
  • rtsp协议默认使用554端口,http使用80端口。
  • RTSP的请求服务器和客户端都可以发送,而HTTP请求则只能由客户端发送

rtsp协议的工作原理

RTSP中所有的操作都是通过服务器和客户端的消息应答机制完成的,其中消息包括请求(request)应答(response)两种。

  1. 请求报文
请求报文格式请求报文格式

RTSP方法

常用:OPTIONS/DESCRIBE/SETUP/PLAY/PAUSE/TEARDOWN

2、响应报文

响应报文响应报文

常用状态码

重要的首部字段

  • CSeq: 指定了RTSP请求响应对的序列号,对每个包含一个给定序列号的请求消息,都会有一个相同序列号的回应消息,且每个请求或回应中都必须包括这个头字段
  • Content-Length:该字段指明在RTSP协议最后一个标头之后的双 CRLF 之后的内容长度。例如在服务器响应DESCRIBE中,指明sdp信息长度
  • Content-Type:告诉客户端实际返回的内容的类型

OPTIONS

一般用于客户端主动发出,获取服务器支持的方法。可以在任何时候发送,不影响服务器的状态。

注意Cseq,Public字段

DESCRIBE

客户端向服务器获取URL指定的媒体对象的描述信息,一般参照SDP协议格式,describe阶段构成了rtsp的媒体初始化阶段

  • Accept字段指定了客户端能理解的描述格式
  • Content-Length:该字段指明在RTSP协议最后一个标头之后的双 CRLF 之后的内容长度。例如在服务器响应DESCRIBE中,指明sdp信息长度
  • Content-Type:告诉客户端实际返回的内容的内容类型

SETUP

客户端向服务器请求建立会话并准备传输。请求信息主要包括流媒体传输的初始化信息

Transport: Transport字段包含客户端可以接受的传输选项列表,包括传输协议,地址端口等。服务器端也通过这个头字段返回实际选择的具体选项。

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

PLAY

客户端主动通知服务器以SETUP指定的传输机制开始发送数据。当多个PLAY请求到达时,服务器会将PLAY请求排成队列,顺序执行,即必须等待第一个PLAY的时间完成后,才会继续处理第二个PLAY消息。

  • Range字段指定了播放的起止时间,可以使用SMPTE、NTP或clock时间单元。

PAUSE

客户端请求服务器的媒体流传输临时暂停,不释放资源。可以通过Range参数在指定时间点暂停,也可以指定某股流暂停,例如如果指定音频流暂停,则播放将是无音状态

TEARDOWN

TEARDOWN请求停止给定URL流发送,释放相关资源。

RECOED

RECORD通知服务器方法客户端将会根据之前的描述开始记录媒体数据。

目前使用情况

live555提供了RTSP流媒体服务器的一个开源解决方案。

0 人点赞