简结">三句话简结
RTP RTCP RTSP RTMP HLS区别与联系
RTP传输流媒体数据、RTCP对RTP进行控制,同步、RTSP发起/终止流媒体
RTP和RTCP互为姐妹关系,RTSP可以使用RTP来传输数据,但并没有绑定关系也可以使用TCP/UDP
RTSP、RTMP、HLS都可以做直播和点播,它们是三种不同的应用层协议
流媒体各协议层次图
关于RTP(RTCP)协议位置的理解:
RTP实际上介于应用层和传输层之间。同时具有应用层和传输层的各种特点。这个特点需要仔细甄别。
从应用开发者的角度看,RTP应该是应用层的一个部分。在应用程序的发送端,开发者必须编写用RTP封装分组(数据包)的程序代码,然后把该RTP分组交给UDP套接字接口。在接收端设备,RTP分组通过UDP套接字接口进入应用层程序后,会利用开发者编写的程序代码把RTP分组从应用数据块提取出来。RTP实际上为视频程序的开发者提供了一个开发平台。
RTP也可以理解为运输层协议,实际上RTP协议偏重于传输层,是UDP协议(用户数据报)上边的一层协议。因为RTP封装了多媒体应用(包括视频流、音频流)的数据块,关键是提供运输层的服务(时间戳,序号、同步源标识符等),因此可以把RTP看成一层UDP上的运输层子层协议,特别要注意是子层协议。
综合来看,RTP协议实际上是一个介于传输层和应用层之间的协议,作用是在UDP协议之上完成一次对媒体流的封装。
基于RTP的流式媒体
流式传输是实现流媒体的关键技术。使用流式传输可以边下载边观看流媒体节目。由于Internet是基于分组传输的,所以接收端收到的数据包往往有延迟和乱序(流式传输构建在UDP上)
要实现流式传输,就要从降低延迟和恢复数据包时序入手。
「在发送端,为降低延迟,往往对传输数据进行预处理(降低质量和高效压缩(常见压缩格式如aac/h264...))」
「在接收端为了恢复时序,常采用接收缓冲,而为了实现媒体的流畅播放,一般会使用播放缓冲」
RTP
RTP(Real-time Transport Protocol)协议创建在UDP协议上常配合RTSP和RTCP一起使用。用于实时传输网络中的多媒体数据,提供端到端的实时传输服务,但并不保证服务质量,服务质量由RTCP来提供。
RTP是流媒体协议族中最基础的一个协议了,它是IETF提出的一个标准,对应RFC文档RFC3550,RFC3550不仅定义了RTP还定义了配套相关协议RTCP。
RTP协议主要职责就是负责流媒体数据包和媒体流的实时传输,每个RTP数据报文由头(header)和装载(Payload)两部分组成,其中头的前12个字节的含义是固定的,装载的数据可以是音频或视频数据。RTP数据报的报头格式如下所示:
「可以将RTP比作一辆货车,货车里面可以随意装东西,但是容积有限制,如果太大你就需要分包,一辆一辆装车发送过,另外可能也不一定按序到达对端,甚至可能失踪」
RTP载荷类型