流媒体传输一般采用HTTP/TCP(RTCP)协议来传输控制信息,而用UDP(RTP)协议来传输实时媒体数据(TCP开销相对较大,所以不太适合传输实时数据)。
流媒体传输一般都是采用建立在UDP协议上的RTP/RTSP等实时传输协议。为何要在UDP而不在TCP上进行实时数据的传输呢?因为两者在数据传输的速度和可靠性方面有很大的区别。TCP协议中包含了专门的数据传送校验机制,当数据接收方收到数据后,会自动向发送方发出确认信息,发送方在接收到该确认信息后,才会继续传送数据,否则将一直处于等待状态;而UDP协议则不同,UDP协议本身并不做任何数据传输校验。由此可以看出:TCP协议注重传输质量,而UDP协议则注重传输速度。因此,对于那些对传输质量要求不是很高,而对传输速度有很高要求的流媒体文件来说,采用UDP协议传输更为合适。
RTSP:发起/终结流媒体,RTSP传输一般使用UDP,信令交互采用TCP,协议基于TCP;RTSP可以对流媒体提供诸如播放、暂停、快进等操作,它负责定义具体的控制消息、操作方法、状态码等,此外还描述了与RTP间的交互操作(RFC2326)。
RTP:基于UDP传输流媒体数据;当应用程序开始一个RTP会话时,将开启两个端口:一个给RTP,一个给RTCP。
RTCP:基于UDP对RTP传输数据提供流量控制和拥塞控制服务。(丢包、延迟、拥塞、流量)为RTP所提供的服务质量(Quality of Service)提供反馈。
RTMP:基于TCP的一个协议族,用来进行实时数据通信的网络协议,解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题,优势在于低延迟,稳定性高
HLS:HTTP Live Streaming是基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,HLS点播,就是常见的分段HTTP点播,不同在于,它的分段非常小。相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议等,HLS直播最大的不同在于,直播客户端获取到的,并不是一个完整的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。由此可见,基本上可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。
RTSP、RTP、RTCP、RTMP区别_rtp和rtsp_道系 青年的博客-CSDN博客
流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)_流媒体传输协议有哪些_雪影的博客-CSDN博客
承载RTSP的协议为TCP,其主要交互过程如下图所示:
流媒体协议之RTSP详解_rtsp推流_^一二三^的博客-CSDN博客