天天看点

RTSP(rfc2326)协议阅读总结

工作需要仔细阅读了rfc2326,记录了rtsp协议的几个要点:

  1:RTSP建立并控制一个或者多个时间同步的连续,有序的媒体流。RTSP是负责建立和控制媒体数据传输通道的,RTSP通道在通常情况下只是负责RTSP命令传输,但是也可以将命令和媒体数据交错传输。

  2:没有RTSP连接的概念,只有RTSP session的概念。RTSP session由服务器端生成的一个标示符唯一标示。在一个RTSP session中,一个RTSP客户端可以选择打开多个TCP传输通道,当然也可以是UDP传输通道。因此RSTP session的数据由底层什么样的协议来承载是没有限制的。

  3:RTSP和HTTP协议的比较

      RTSP和HTTP协议非常相似,但是也有若干不相同的地方。

      1) RTSP是一个有状态协议,HTTP是无状态的。

      2) RTSP服务器和客户端都可以发送请求(request命令)。

      3) 除交织传输命令和数据外,RSTP的媒体数据是带外传输:在另外的通道由不同的协议来传输,例如RTP。

      4) RTSP采用UTF-8编码,HTTP采用ISO-8859-1编码。

      5) 请求的URL总是包含绝对的路径(全路径)。

  4: 归并控制(Aggregate control):RTSP客户端可以发送一个play或者pause命令来同时控制音频流和视频流

  5: RTSP协议功能比较丰富,一个RTSP服务器可以选择实现可选择实现的功能,例如:

      1) 一个RTSP服务器可以仅支持播放(playback)请求,不支持录播(record)请求。

      2) 一个RTSP服务器可以不支持seek。

      3) 一个RTSP服务器可以不支持GET_PARAMETER and SET_PARAMETER功能。

  6: RTSP扩展方式,有如下三种方式:

      1) 扩展存在方法:扩展存在方法新的参数,只要这些参数能被接受端安全的忽略。

      2) 添加新的方法:可以添加新的方法,如果接受者不能理解该请求,回应501错误码表示方法没有实现。

      3) 可以定义新版本的协议。

  7: DESCRIBE消息描述:该消息获得媒体所有的相关信息,通过Accept头来指定描述信息的格式,通常是SDP格式。获取媒体初始化的信息有三种途径:

      1) DESCRIBE命令

      2) 通过一些其他的协议,例如HTTP

      3) 任何其他途径,只要是客户能够理解的格式。

通过上面我们可以看出,DESCRIBE不是必须实现的方法,只要有途径获取媒体的初始化信息就可以,而且在RTSP中获取媒体初始化信息的过程是必须的,只是不一定通过DESCRIBE来实现。

继续阅读