流媒体协议简介

1,348 阅读4分钟

这是我参与8月更文挑战的第27天,活动详情查看:8月更文挑战

视频直播和点播区别

点播:先是将内容录制好,储存分发到云服务器,当用户需要观看时再从互联网中调用文件,进行播放。

直播:视频内容是实时录制的,与此同时,将音视频以媒体“流”的形式推到服务器上。此时,一旦有观众收看该直播,服务器收到响应后,会将媒体流传输至播放器,实现视频播放

主流流媒体协对比

在流媒体协议中,常用的流媒体协议主要有 HTTP 协议,RTSP 协议和 RTMP 协议。

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

HTTP 协议

HTTP 视频协议,主要是在互联网普及之后,在互联网上看视频的需求下形成的。

最初的 HTTP 视频协议,没有任何特别之处,就是通用的 HTTP 文件渐进式下载。本质就是下载视频文件,而利用视频文件本身的特点,就是存在头部信息和部分视频帧数据就完全可以解码播放,显然这种方式需要将视频文件的头部信息放在文件的前面。

但是最为原始的状态下,视频无法进行快进或者跳转播放到文件尚未被下载到的部分,这个时候对 HTTP 协议提出了 range-request 的要求,目前几乎所有 HTTP 服务器都已经提供支持。

range-request,是指请求文件的部分数据(指定偏移字节数)。在视频客户端解析出视频文件的头部后,就可以判断后续视频相应的帧的位置或者根据码率等信息计算相应的位置。

优点

HTTP Live Streaming 还有一个巨大优势:自适应码率流播(adaptive streaming)。效果就是客户端会根据网络状况自动选择不同码率的视频流,条件允许的情况下使用高码率,网络繁忙的时候使用低码率,并且自动在二者间随意切换,这对移动设备网络状况不稳定的情况下保障流畅播放非常有帮助。实现方法是服务器端提供多码率视频流,并且在列表文件中注明,播放器根据播放进度和下载速度自动调整,使用起来也非常简单。

缺点

实时性相对较差,直播的时候延迟比较高。

RTSP 协议

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

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

优点

RTSP 协议族的优势,在于可以控制到视频帧,因此可以承载实时性很高的应用。这个优点是相对于 HTTP 方式的最大优点。H.323 视频会议协议,底层一般采用 RTSP 协议。

RTSP 协议族的复杂度主要集中在服务器端,因为服务器端需要 parse 视频文件,seek 到具体的视频帧,而且可能还需要进行倍速播放(就是老旧的 DVD 带的那种 2 倍速,4 倍速播放的功能),倍速播放功能是 RTSP 协议独有的,其他视频协议都无法支持。

缺点

就是服务器端的复杂度也比较高,实现起来也比较复杂。iOS 端不支持该协议。

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 等。

优点

支持直播、点播

缺点

需要专用的服务器

其他资料