流媒体技术介绍(上)

  流媒体就是指采用流式传输技术在网络上连续实时播放的媒体格式,如音频、视频或多媒体文件。所谓流媒体技术就是把连续的影像和声音信息经过压缩处理后放上网站服务器,由视频服务器向用户计算机顺序或实时地传送各个压缩包,让用户一边下载一边观看、收听,而不要等整个音视频文件下载到自己的计算机上才可以观看的网络传输技术。

一、传统流媒体技术

  传统的媒体内容分发技术是以RTSP/RTP(Real Time Streaming Protocol/Real Time Transfer Protocol)、RTMP为代表的面向连接的流媒体技术。

  实时流式传输采用专门的流媒体服务器存储多媒体文件。当客户端发起连接想要观看多媒体资源的时候,一般通过专有的实时流式传输协议把位于流媒体服务器上的多媒体数据直接传输给客户端的播放器,再实时播放。他与服务器交互的流程如图-1 所示。

  图-1 实时流式传输

  RTSP是一种传统的流媒体控制协议,其具有状态性的特点,意味着从一个客户端开始连接至服务端,一直到连接中断的整个过程,服务器端会一直监听客户端的状态。客户端通过RTSP协议向服务器传达控制命令,如播放、暂停或中断等。

  RTP/RTCP(Real Time Transfer Control Protocol)是端对端基于组播的应用层协议。其中,RTP用于数据传输,RTCP用于统计、管理和控制RTP传输,两者协同工作,能够显著提高网络实时数据的传输效率。

  基于此架构的流媒体技术方案,服务端和客户端之间建立连接之后,服务器开始持续不断地发送媒体数据包,媒体数据包采用RTP进行封装,客户端控制信息通过RTSP信息包以UDP或TCP的方式传送。

  RTMP是由Adobe 公司提出的。RTMP协议全称是Real Time Messaging Protocol,即实时消息传送协议,用于在Flash 平台之间传递视音频以及数据。与RTSP + RTP 组合提供流媒体服务的方式不同,RTMP 协议本身既可以传输多媒体数据也可以控制多媒体播放。RTMP 协议使用TCP 协议作为其传输层的网络协议。TCP 是面向连接的,提供可靠交付的协议,因此在互联网上传输时不会出现丢包情况,从而保证了用户体验。但是TCP 协议提供可靠交付的代价就是增加了一些额外的开销,占用了一些带宽和处理机资源。

  选择RTMP 协议作为其提供流媒体服务的应用层协议,在于它有以下几个特点: 无须安装客户端程序,浏览器Flash Player默认支持播放RTMP流。采用TCP 协议作为其在传输层的协议,避免了多媒体数据在广域网传输过程中的丢包对质量造成的损失,保证了媒体传输质量。

  基于RTSP/RTP 的流媒体系统专门针对大规模

 Ø流媒体播放的实时性。

  与渐进下载客户端需要先缓冲一定数量媒体数据才能开始播放不同,基于RTSP/RTP的流媒体客户端几乎在接收到第一帧媒体数据的同时就可以启动播放。支持进度条搜索、快进、快退等高级VCR控制功能。

  Ø平滑、流畅的音视频播放体验。

  在基于RTSP的流媒体会话期间,客户端与服务器之间始终保持会话联系,服务器能够对来自客户端的反馈信息动态做出响应。当因网络拥塞等原因导致可用带宽不足时,服务器可通过适当地降低帧率等方式来智能调整发送速率。

  Ø支持大规模用户扩展。

  专业的流媒体服务器在大容量媒体文件硬盘读取、内存缓冲和网络发送等方面进行了优化,可支持大规模用户接入。

  Ø内容版权保护。

  在基于RTSP/RTP的流媒体系统中,客户端只在内存中维持一个较小的解码缓冲区,播放后的媒体数据随时清除,用户不容易截取和拷贝。此外还可利用DRM等版权保护系统进行加密处理。

  尽管如此,基于RTSP/RTP的流媒体系统在实际的应用部署中仍然遇到了不少问题,主要体现在:

  Ø与Web服务器相比,流媒体服务器的安装、配置和维护都较为复杂,特别是对于已经建有CDN(内容分发网络)等基础设施的运营商来说,重新安装配置支持RTSP/RTP的流媒体服务器工作量很大;

  ØRTSP/RTP协议栈的逻辑实现较为复杂,与HTTP相比支持RTSP/RTP的客户端软硬件实现难度较大,特别是对于嵌入式终端来说;

  ØRTSP协议使用的网络端口号(554)可能被部分用户网络中的防火墙和NAT等封堵,导致无法使用。虽然有些流媒体服务器可通过隧道方式将RTSP配置在HTTP的80端口上承载,但实际部署起来并不是特别方便。

本文福利, C++音视频学习资料包、技术视频,内容包括(音视频开发,面试题,FFmpeg webRTC rtmp hls rtsp ffplay srs↓↓↓↓↓↓见下面↓↓文章底部↓↓

 二、HTTP渐进式下载技术

  HTTP渐进式下载技术与有状态的RTSP/RTP技术相比,采用了无状态的HTTP协议。当HTTP客户端向前端请求数据时,服务端将请求的数据下发给客户端,但是服务端并不会记录客户端的状态,每次HTTP请求都是一个一次性独立的会话。它的与服务器交互的流程如图-2 所示。

图-2 HTTP渐进式下载

  渐进式下载的功能目前主流的终端播放器均支持,如Adobe的Flash、微软的Silverlight以及Windows Media Player。所谓的渐进式下载,即终端播放器可以在整个媒体文件被下载完成之前即可开始媒体的播放,如果客户端及服务端都支持HTTP1.1,终端还可从没下载完成的部分中任意选取一个时间点开始播放。

  目前,主流的视频网站都采用了HTTP渐进式下载的方式来实现流媒体的分发,如YouTube、优酷网、搜狐视频等等。

  作为最简单和原始的流媒体解决方案,HTTP渐进式下载尤其显著的优点在于它仅需要维护一个标准的Web服务器,其安装和维护的工作量和复杂性比起专门的流媒体服务器来说要简单和容易得多。

  然而,其缺点和不足也很明显。

  Ø带宽容易浪费。当一个用户在开始下载观看一个内容之后选择停止观看,那么已经下载完成的内容则是对带宽资源的一种浪费。

  Ø缺乏文件内容保护机制。在渐进下载模式中,下载后的文件缓存在客户端硬盘的临时目录中,用户可将其拷贝至其他位置供以后再次播放。

  Ø基于HTTP的渐进式下载仅仅适用于点播内容,而不支持直播内容。

  Ø此方式缺乏灵活的会话控制功能和智能的流量调节机制。

  三、自适应流媒体技术

  自适应流媒体技术(ABS - adaptive bitrate streaming) 融合了传统RTSP/RTP流媒体技术以及基于HTTP渐进式下载技术的优点,具有高效、可扩展以及兼容性强的特点。ABS技术使用HTTP 传送视频流,使用多码率编码源内容,每个单码率的视频流被切成小的,几秒钟的小切片。如图-3所示为ABS技术的实现原理。

图-3 自适应流媒体技术框架

  流媒体客户端首先获取所有码率的切片索引信息。一开始,客户端先请求最低码率的串流。如果客户端判断下载速度比当前码率的切片串流快,它就去请求下一个更高码率的串流。随着播放的进行,如果客户端发现下载速度比当前码率的切片串流慢,转而请求下一个较低码率的串流。

  切片大小和具体实现密切相关,不过一般都在2~10秒之间。每个切片由一个完整的GOP序列组成,一个GOP序列里面有1个或者多个I帧,GOP序列的第一个帧必须是I帧,并且每个切片都能单独的解码播放显示。

  码流自适应技术有几个共同的技术特点:

  Ø内容的准备,包括了支持多屏的转码平台以及媒体的分割切片模块。它从同一个源产生多个不同码率的节目流以适应不同的带宽和不同的设备类型。

  Ø内容的分发,包括了基于HTTP的内容源服务器以及面向终端的内容分发网络,能够自适应分发文件,支持大并发拉流的功能。以及码流传输的变化都是适应有效网络吞吐量和可用的CPU资源。

  Ø所有的操作对用户都是透明的,节目流的切换都在后台进行,用户很难注意到节目流的变化。

  自适应流媒体传输相对与传统流媒体传输具有以下几个优点:

  Ø采用了通用的HTTP协议,传统的HTTP缓存/代理、防火墙等网络设备可以完美兼容,它实施起来成本更低;

  Ø它具备了更好的伸缩性和可达性,可根据最后接入网的带宽大小动态地调整码率,实现内容的分发;

  Ø它能够让观众有更好的体验,而不需要内容提供商或运营商去猜测用那种码率传输更适合观众;

  ABS除了上述优势之外,还有以前任何技术均不具备的特点,具体如下:

  Ø快速播放以及拖动,用户等待的时间更短。客户端初始化默认选择低码率,开始播放后逐步向高码率进行切换,因此,其服务质量是在可用带宽范围之内不断被进行调整和优化;

  Ø不需要大的缓存,不间断地播放,平滑的视频播放体验;

  Ø基于网络状况和CPU解码能力的无缝码率切换;

  相对于传统的流媒体技术,ABS技术能够提供更好的服务质量,因为它可以使用整个可用的带宽,而非自适应流技术则是强制客户端选择一个低于可用带宽的固定比特率。

原文链接:流媒体技术介绍(上篇) - 资料 - 我爱音视频网 - 构建全国最权威的音视频技术交流分享论坛

猜你喜欢

转载自blog.csdn.net/m0_60259116/article/details/125746039