流媒体协议简介(整理 & 总结)

一、流媒体概述

  1、采用数据流方式在网络上进行播放的媒体格式;

  2、内容提供方可以将视频文件或是摄像头数据以数据包的方式,通过特定的协议传送到网络上供用户使用;

  3、用户通过指定的协议对网络数据进行解释,还原成可显示的数据,显示给用户;

  4、网络传输媒体文件时一般都会采用压缩算法对原始数据进行压缩,降低对网络带宽的依赖;

  5、传输数据时通常保持连贯性,保证数据连续性和实时性;

  6、用户不必像非流式播放那样等到整个文件才可以播放,只需等到足够的启动数据,即可观看,其余数据将继续下载,直到播放完毕;

二、主流协议

  在流媒体协议中,常用的流媒体协议主要有 HTTP协议,RTSP协议和RTMP协议。 国内视频网站多采用HTTP+MP4或者HTTP+FLV协议传输视频,而国外使用RTMP,RTSP等专门的流媒体格式。

1、Http 协议

  http的视频协议,主要是在互联网普及之后。在互联网上看视频的需求下形成的。 最初的HTTP视频协议,没有任何特别之处,就是通用的HTTP文件渐进式下载。 本质就是下载视频文件,而利用视频文件本身的特点,

就是存在头部信息,和部分视频帧数据,就完全可以解码播放了。显然这种方式需要将视频文件的头部信息放在文件的前面。有些例如faststart工具,就是专门做这个功能的。但是最为原始的状态下,视频无法进行快进或

者跳转播放到文件尚未被下载到的部分。这个时候对HTTP协议提出了range-request的要求。这个目前几乎所有HTTP的服务器都支持了。 range-request,是请求文件的部分数据,指定偏移字节数。在视频客户端解析出视

频文件的头部后,就可以判断后续视频相应的帧的位置了。或者根据码率等信息,计算相应的为位置。目前常用的基于HTTP协议的视频协议是来源有APP公司的HSL(HTTP Live Streaming)协议,其优缺点:

  优点,自适应码率流播(adaptive streaming)。效果就是客户端会根据网络状况自动选择不同码率的视频流,条件允许的情况下使用高码率,网络繁忙的时候使用低码率,并且自动在二者间随意切换。这对移动设备网

络状况不稳定的情况下保障流畅播放非常有帮助。实现方法是服务器端提供多码率视频流,并且在列表文件中注明,播放器根据播放进度和下载速度自动调整。使用起来也非常简单。 

       缺点,实时性相对较差,直播的时候延迟比较高,通常要在10S以上;

2、Rtsp 协议

  基于TCP/IP协议体系的一个应用层协议,RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。 本协议是最早的视频传输协议。

其中RTSP协议用于视频点播的会话控制,例如发起点播请求的SETUP请求,进行具体播放操作的PLAY、PAUSE请求,视频的跳转也是通过PLAY请求的参数支持的。

  优点,可以控制到视频帧,因此可以承载实时性很高的应用。这个优点是相对于HTTP方式的最大优点。复杂度主要集中在服务器端,可以进行倍速播放功能,其他视频协议都无法支持。 网络延时低,一般在0.5S以内;

  缺点,就是服务器端的复杂度也比较高,实现起来也比较复杂。ios端不支持该协议,对移动端支持较弱;

3、Rtp 协议(媒体数据传输协议)

     Rtp数据协议负责对流媒体数据进行封包并实现媒体流的实时传输,每一个RTP数据报都由头部(Header)和负载(Payload)两个部分组成,其中头部前12个字节的含义是固定的,而负载则可以是音频或者视频数据。

Rtp用到的地方就是 PLAY ,服务器往客户端传输数据用UDP协议,RTP是在传输数据的前面加了个12字节的头(描述信息)。

     RTP载荷封装设计本文的网络传输是基于IP协议,所以最大传输单元(MTU)最大为1500字节,在使用IP/UDP/RTP的协议层次结构的时候,这 其中包括至少20字节的IP头,8字节的UDP头,以及12字节的RTP头。这

样,头信息至少要占用40个字节,那么RTP载荷的最大尺寸为1460字 节。以H264 为例,如果一帧数据大于1460,则需要分片打包,然后到接收端再拆包,组合成一帧数据,进行解码播放。

4、RTCP控制协议(媒体数据传输质量控制协议)

     RTCP控制协议需要与RTP数据协议一起配合使用,当应用程序启动一个RTP会话时将同时占用两个端口,分别供RTP和RTCP使用。RTP本身并 不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,

这些都由RTCP来负责完成。通常RTCP会采用与RTP相同的分发机制,向会话中的 所有成员周期性地发送控制信息,应用程序通过接收这些数据,从中获取会话参与者的相关资料,以及网络状况、分组丢失概率等反馈信

息,从而能够对服务质量进 行控制或者对网络状况进行诊断。

    RTCP协议的功能是通过不同的RTCP数据报来实现的,主要有如下几种类型:

    SR:发送端报告,所谓发送端是指发出RTP数据报的应用程序或者终端,发送端同时也可以是接收端。(SERVER定时间发送给CLIENT)。

    RR:接收端报告,所谓接收端是指仅接收但不发送RTP数据报的应用程序或者终端。(SERVER接收CLIENT端发送过来的响应)。

    SDES:源描述,主要功能是作为会话成员有关标识信息的载体,如用户名、邮件地址、电话号码等,此外还具有向会话成员传达会话控制信息的功能。

    BYE:通知离开,主要功能是指示某一个或者几个源不再有效,即通知会话中的其他成员自己将退出会话。

    APP:由应用程序自己定义,解决了RTCP的扩展性问题,并且为协议的实现者提供了很大的灵活性。

5、RTMP协议

    RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。RTMP(Real Time Messaging Protocol)实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输 开发的开放协议。

该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视

频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。

 优点,支持直播、点播 
   缺点, 需要专用的服务器。

三、协议总结

1、协议体系结构

2、Rtsp协议一般与RTP/RTCP协议混合使用;

3、Rtsp / Http 协议是共有协议,有专门组织维护,Rtmp协议是私有协议;

4、RTMP和HTTP有adaptive streaming的技术,RTSP没有;

5、RTSP实时性是最好的,HTTP实时性比较差;

6、ios不支持rtsp,安卓支持;

 

posted on 2019-03-07 11:04  皇后大道  阅读(3457)  评论(0编辑  收藏  举报

导航