视频网络协议

来源:互联网 发布:行政区域数据 编辑:程序博客网 时间:2024/05/19 11:16

视频网络中的协议有很多,一般开发中经常用Http渐进下载协议,RTSP/RTP/RTCP协议族,RTMP等流媒体协议,前两者是共有协议,并有专门机构来维护,或者是Adobe的私有协议,并未完全公开,接下来主要说一下前两者协议。

http协议

http协议,即超文本传输协议(HyperText Transfer Protocol),通常,有客户端发请求,建立一个到服务器制定端口(默认80)的TCP连接,是应用层协议;其将所有的数据当做文件处理,不支持实时流媒体数据传输。本质上就是从服务器下载视频文件,客户端利用视频文件中的头部信息与部分视频帧数据,实现解码播放。
http协议一般支持Range-request,在多线程下载的时候会常用到,即分多个线程请求文件的部分数据,制定不同线程的起始偏移数,同时开启下载。当在客户端解析出视频文件的头部后,就可以判断后续视频的帧位置,达到网络上观看视频的要求,观看时一般会有缓冲。
采用http协议播放视频的好处:可采取通用的http服务器就可提供服务,不需要搭建专门的流媒体服务器,可以采用通用的CDN来简化视频的部署分发工作,减少带宽的使用,目前大部分视频网站提供的点播视频服务,都是基于此
HLS(HTTP Live Streaming),苹果公司推出的动态码流自适应技术,用于终端播放视频的流媒体网络传输协议,包括一个m3u8的索引文件,TS媒体切片文件和key加密串文件,应该也是基于http协议,其原理是将整个流分成一个个小的,基于HTTP的切片文件来下载,每次下载一些,利用索引文件中给出的不同码率的视频文件的地址,客户端根据获取带宽的情况,从许多不同的备用源中以不同的速率下载同样的资源,自适应选择合适码率的视频文件来播放。

流媒体协议

RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。
引用百度中的定义:RTSP是用来控制声音或影像的多媒体串流协议,并允许同时多个串流需求控制,传输时所用的网络通讯协定并不在其定义的范围内,服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。而前面提到的允许同时多个串流需求控制(Multicast),除了可以降低服务器端的网络用量,更进而支持多方视讯会议(Video Conference)。因为与HTTP1.1的运作方式相似,所以代理服务器〈Proxy〉的快取功能〈Cache〉也同样适用于RTSP,并因RTSP具有重新导向功能,可视实际负载情况来转换提供服务的服务器,以避免过大的负载集中于同一服务器而造成延迟。
作为一个应用层协议,RTSP提供了一个可供扩展的框架,它的意义在于使得实时流媒体数据的受控和点播变得可能。总的说来,RTSP是一个流媒体表示 协议,主要用来控制具有实时特性的数据发送,但它本身并不传输数据,而是必须依赖于下层传输协议所提供的某些服务。RTSP可以对流媒体提供诸如播放、暂 停、快进等操作,它负责定义具体的控制消息、操作方法、状态码等。
RTCP控制协议需要与RTP数据协议一起配合使用,当应用程序启动一个RTP会话时将同时占用两个端口,分别供RTP和RTCP使用。RTP本身并 不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完成。通常RTCP会采用与RTP相同的分发机制,向会话中的 所有成员周期性地发送控制信息,应用程序通过接收这些数据,从中获取会话参与者的相关资料,以及网络状况、分组丢失概率等反馈信息,从而能够对服务质量进 行控制或者对网络状况进行诊断。
RTCP协议的功能是通过不同的RTCP数据报来实现的,主要有如下几种类型。
SR:发送端报告,所谓发送端是指发出RTP数据报的应用程序或者终端,发送端同时也可以是接收端。(SERVER定时间发送给CLIENT)。
RR:接收端报告,所谓接收端是指仅接收但不发送RTP数据报的应用程序或者终端。(SERVER接收CLIENT端发送过来的响应)。
SDES:源描述,主要功能是作为会话成员有关标识信息的载体,如用户名、邮件地址、电话号码等,此外还具有向会话成员传达会话控制信息的功能。
BYE:通知离开,主要功能是指示某一个或者几个源不再有效,即通知会话中的其他成员自己将退出会话。
APP:由应用程序自己定义,解决了RTCP的扩展性问题,并且为协议的实现者提供了很大的灵活性。
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,则需要分片打包,然后到接收端再拆包,组合成一帧数据,进行解码播放。

0 0
原创粉丝点击