网易视频云分享:流媒体技术介绍(上篇)

网易视频云2016-04-14 11:49:49 创业 媒体 技术 阅读(949)评论(0)

声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。举报

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

  一、传统流媒体技术

  传统的媒体内容分发技术是以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端口上承载,但实际部署起来并不是特别方便。

  二、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技术能够提供更好的服务质量,因为它可以使用整个可用的带宽,而非自适应流技术则是强制客户端选择一个低于可用带宽的固定比特率。

  本次分享就到这里。流媒体技术技术之下篇将在网易视频云官方微信(vcloud163)继续发布哦,也可到网易视频云官网,与技术专家直接进行交流!

网易视频云分享:流媒体技术介绍(上篇)相关推荐

  1. 网易视频云分享:最佳日志实践

    网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,提供稳定流畅.低时延.高并发的视频直播.录制.存储.转码及点播等音视频的PAAS服务,在线教育.远程医疗.娱乐秀场.在线 ...

  2. 网易视频云分享:如何搭建MP4媒体服务器

    网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,提供稳定流畅.低时延.高并发的视频直播.录制.存储.转码及点播等音视频的PAAS服务,在线教育.远程医疗.娱乐秀场.在线 ...

  3. 网易视频云专注于技术服务——异步通知系统

    随着互联网技术的发展,云计算在资源层面竞争已经进入白热化的阶段,网易视频云定位于PAAS层面,从各个技术领域进行技术钻研以提供给用户更高效.更稳定.更便捷的视频直播技术服务:notify系统作为网易视 ...

  4. 网易视频云:流媒体服务器原理和架构解析

    流媒体传输类型 主流的流媒体协议 流媒体协议原理 (一) HTTP渐进式下载原理(仅支持文件播放) (二) 苹果支持的HLS原理(实况直播.文件点播) (三) Adobe Flash 支持的RTMP协 ...

  5. 网易视频云分享:如何搭建视频转码集群

    随着媒体技术的发展,以及硬件设备的普及和移动设备的触角延伸之社会各个角落,人们可以随时随地产生信息.而这些海量信息中,有不少多媒体信息.多媒体信息成为了人们信息分享的重要方式.毫不夸张地说,现在是一个 ...

  6. hbase实战技术分享案例【网易视频云技术分享】

    网易视频云:HBase最佳实践-列族设计优化 http://jingyan.baidu.com/article/642c9d3414e5c8644a46f7f5.html 网易视频云:网易HBase基 ...

  7. 网易视频云郭再荣:打造一体化多场景的视频云平台

    2016年被称之为网络直播的元年,除了腾讯.乐视.优酷土豆等视频网站,花椒.斗鱼.熊猫等为代表移动直播平台开始引发现象级的关注.在这场直播大戏中,提供直播和点播服务的视频云成为技术领域的实际推动者,也 ...

  8. 网易视频云郭再荣:视频云服务趋向场景化一体化

    2016年是网络直播的元年,创业类的直播平台在今年野蛮生长,腾讯.微博等巨头级企业也在今年正式进入直播市场.可就整个行业来看,"资本寒冬"已然波及到了直播行业,直播平台背后的视频云 ...

  9. 网易视频云CEO余利华:云服务的核心仍是用户体验

    如果说2016年互联网科技圈最热门的词汇,"直播"必定是最佳候选之一.来势汹汹的直播,正在与各式各样的行业联姻,形成"直播+"的经济模式,一度引发了全民直播的热 ...

最新文章

  1. 能“看穿”换脸视频背后的AI模型
  2. 消息称苹果正在组建新智能家居团队
  3. 系统自动登录及盘符无法双击打开问题处理
  4. Kubernetes源码分析之kubelet
  5. 【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )
  6. 【C++】log(n)斐波那契数列计算
  7. java 索引排序_Java培训MySQL之排序分组优化索引的选择
  8. Angularjs 中的 controller
  9. 为什么c语言读文件少内容,这个程序为什么在读文件时候读不全数据?
  10. jsch 长连接_广濑连接器DF13
  11. python入门24 json模块
  12. android fastboot驱动,fastboot驱动
  13. 第二章 软件项目立项与规划
  14. VMware+Ubuntu安装过程,含秘钥
  15. 下载dns linux命令,linux dns 部署命令(示例代码)
  16. 微信小程序input标签详解
  17. Guava的Splitter和Joiner
  18. [转载]MySQL 中 char 与 varchar 能存多少汉字问题_-Chaz-_新浪博客
  19. 农大计算机工程,肖德琴-华南农业大学计算机科学与工程系
  20. Chaos Mesh® 在腾讯——腾讯互娱混沌工程实践

热门文章

  1. 模型在gpu上反而速度变慢了_Tensorflow1.13.1+CUDA10.0+CuDNN7.4在GPU上训练模型
  2. 从ubuntu中文论坛转载的一片超好的文章,慢慢学习中
  3. leetcode算法题--数值的整数次方
  4. leetcode算法题--反转字符串
  5. leetcode算法题--最佳买卖股票时机含冷冻期★
  6. 使用正确的主机名访问https,提示连接不安全
  7. 浅谈 PHP 与手机 APP 开发(API 接口开发)
  8. 初学laravel migrate常见错误解决
  9. mysql 导入导出摘要
  10. SpringMVC REST 风格静态资源访问配置