RTSP协议

2021/03/11

Kkem Chen

RTSP协议

实时流传输协议(Real Time Streaming Protocol,RTSP),RFC2326(中文版),是一种基于文本的应用层协议。(建立于RTP和RTCP协议上)
特点:1对N
该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据. RTSP在体系结构上位于RTP和RTCP之上, 它使用TCP或RTP完成数据传输. RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色。尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据。媒体数据的传送可通过RTP/RTCP等协议来完成。


重点概念讲解

  • RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。
  • Real-time Transport Protocol或简写RTP,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。它是创建在UDP协议上的。
  • Real-time Transport Control Protocol或RTP Control Protocol或简写RTCP)是实时传输协议(RTP)的一个姐妹协议。RTCP由RFC 3550定义(取代作废的RFC 1889)。
  • RTP 使用一个 偶数 UDP port ;而RTCP 则使用 RTP 的下一个 port,也就是一个奇数 port。RTCP与RTP联合工作,RTP实施实际数据的传输,RTCP则负责将控制包送至电话中的每个人。其主要功能是就RTP正在提供的服务质量做出反馈。
  • RTSP协议:负责服务器与客户端之间的请求与响应
  • RTP协议:负责传输媒体数据
  • RTCP协议:在RTP传输过程中提供传输信息

rtsp承载与rtp和rtcp之上,rtsp并不会发送媒体数据,而是使用rtp协议传输

rtp并没有规定发送方式,可以选择udp发送或者tcp发送

RTP协议格式

RTP是一种应用层协议,传输层协议可以是TCP或者UDP(UDP多一些)!

RTP数据包由两部分组成,一部分是RTP Heaeder,一部分是RTP body,RTP Header占用最少12个字节,最多72个字节;另一部分是RTP Payload,用来封装实际的数据负载,如封装h264编码的视频数据!

  • RTP Header格式
   0               1                 2               3             4
    
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |V=2|P|X|  CC |M|     PT          | sequence number             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | timestamp                                                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | synchronization source (SSRC) identifier                      |
   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
   | contributing source (CSRC) identifiers                        |
   | ....                                                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • PayLoad部分

H.264标准协议定义了两种不同的类型:一种是VCL即Video Coding Layer,一种是NAL即Network Abstraction Layer。
其中前者就是编码器吐出来的原始编码数据,没有考虑传输和存储问题。后面这种就是为了展现H.264的网络亲和性,对VCL输出的slice片数据进行了封装为NALUs(NAL Units),然后再封装为RTP包进行传输

vcl,video coding layer,即视频编码层,负责编码视频,独立于网络环境。 
nal,network abstraction layer,即网络抽象层,把vcl提供的数据进行封装,应用于网络传输。



参考链接:
rtsp协议详解
RTP/RTCP详解系列—–协议介绍
音视频压缩:H264码流层次结构和NALU详解
音视频 H264 编解码协议(概念、码流分层结构、NALU Header & RBSP)
视频H264编码详解



comments powered by Disqus