目前,HAS技术的实现方式从标准的类型来看主要有两大类:一类是企业方案,即提供了整体的技术解决方案,如Apple Live Streaming技术、Adobe Dynamic Streaming技术、Microsoft Smooth Streaming技术;另一类是一些国际标准组制定的技术标准,如OIPF的HTTP Adaptive Streaming、MPEG的DASH(Dynamic Adaptive Streaming over HTTP)、IETF的草案(由Apple公司提议的草案)。如图所示。

图 HTTP自适应流媒体技术概览

1. Apple HLS (HTTP Live Streaming)

HTTP Live Streaming是Apple公司的HAS整体解决方案,该方案设计的目标主要是通过普通的Web服务器将直播内容或点播内容推送至Apple的终端设备,如iPhone、iPad以及苹果的台式机。Apple公司的技术规范现已提交至IETF组织讨论,成为正式的 RFC。

HTTP Live Streaming由三部分组成:服务器组件、分发组件和客户端。如图-5所示。

图 HTTP Live Streaming技术框架

首先,编码器接收音视频输入,并采用H.264编码技术,输出MPEG-2 TS流,然后利用切片软件按设定的时间间隔对TS码流进行切割并保存为一个个TS文件。这些TS文件部署在Web服务器上,切片软件同时还创建了包含这些TS文件相关信息的索引文件。索引文件的URL在Web服务器上发布,客户端读取索引文件,然后按顺序向服务器请求媒体文件并无停顿地显示它们。

HTTP Live Streaming方案主要技术特点:

Ø 节目源采用H.264/TS编码格式,可变码率;

使用流切片技术将一个完整的节目切成若干小片,通常是10秒每片,同时使用m3u或m3u8格式生成播放列表文件,索引文件用来指导播放器如何播放文件切片;

Ø 通过HTTP Server分发节目,同时提供合适的缓存;

Ø 能够实现动态自适应码率传输。相对于移动流媒体RTP传输技术,HLS能够根据终端用户带宽的可用性在终端而不是在前端视频服务上,实现对码率的切换。这种实现方式是为用户在无保障的网络上提供好的用户体验。

Ø 索引文件说明了在同一个频道或文件中不同码率节目流的对应性;

Ø 终端根据接收切变文件的时间长度来选择最合适的码率;

Ø 每个切片文件一般是10秒,所以接收设备可以自动适应码率变化;

HTTP Live Streaming支持实时直播和视频点播两种应用场景。

对于实时直播来说,当新的媒体文件被创建时,索引文件也会随之更新,旧的索引文件通常会被删除。更新的索引文件会在连续流中显示一个移动的窗口,这种类型的会话适合连续的直播内容。对于视频点播,媒体文件在整个会话周期内都是固定不变的。索引文件是静态的,只需在媒体开始播放前获取一次,其包含了所有媒体文件的完整列表。

目前,HTTP Live Streaming没有考虑对DRM的完整支持,但它支持内容的加密,通过16位密钥的AES-128加密算法对内容加密,HTTP Live Streaming中仅对如何通过URI获取密钥进行了粗略的定义,并没有说明如何从DRM 密钥服务器中获取密钥。这就说明DRM与HLS之间并不完全兼容。

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

u 优势

所有iOS设备都默认支持HLS技术,同时Android3.0以上系统也支持播放HLS流。因此HLS技术有着巨大的市场,特别是针对移动设备。HLS为不可靠的开放网络提供了一种有效的码率自适应方案。HLS使用成熟的H.264编解码技术,目前H.264解码芯片提供商有很多。HLS基于TS技术,使得它可以很容易集成到已有的数字电视系统中,许多IPTV DRM方案提供商能够提供相应的解决方案。

u 不足

自适应技术方案只限制在用户端,这种动态方法可能限制某些专业用户希望能够自己对特殊内容传输进行微调和控制;APPLE并没有支持主要浏览器集成HLS,缺乏插件使得利用Web TV收看HLS节目变得困难;HLS主要使用MPEG标准,兼容HLS技术的设备可能需要向MPEG LA支付一定的专利费。HLS中DRM加密采用是端到端整体加密实现,这样降低了系统的灵活性;目前,HLS只能提供一个音轨在一个视频流中。IOS 5能够提供可切换的音轨,但是音轨数量被限制在2个,而在Smooth Streaming或MPEG-DASH中则对音轨的数量没有限制。

2. Adobe HDS (HTTP Dynamic Streaming)

Adobe公司的传统流媒体解决方案RTMP+FLV的组合,在互联网视频行业得到了广泛的应用。针对动态码率自适应的需求,Adobe公司首先在其传统的解决方案上实现了码率自适应,但随后不久Adobe公司也推出了基于HTTP的码率自适应解决方案HTTP Dynamic Streaming,如图所示。

图 HTTP Dynamic Streaming技术框架

Adobe HTTP Dynamic Streaming包含了多个部件来完成内容的准备工作,并通过HTTP将内容传送给终端的Flash Player。

内容准备模块包括了面向VOD和面向Live直播的模块,VOD打包模块将媒体文件分片,并以F4F的格式存储,Live直播打包模块将直播流实时地写入到F4F文件当中。

HTTP源模块是标准的Web Server,存储了F4F文件和媒体对应的F4M格式的索引文件,索引文件中包含了编码、分辨率以及码率等参数信息。

HDS 的文件格式为 FLV/F4V/MP4,索引文件为 f4m,同时支持直播和时移。HDS系统主要由以下几个部分组成:

Ø 一个以XML为基础的索引文件.f4m

Ø 包含MPEG-4编码格式内容的片文件.f4f

Ø 包含切片文件说明信息的索引文件.f4x

HDS支持H.264以及VP6视频编码格式,AAC和MP3音频编码格式。.f4m 文件块索引文件文件包好一个bootstrap,它相对于MPEG-DASH的初始化段,这能够指示终端播放器从哪一个片开始解码。在文件块索引文件中,如果有多种码率可选,播放器能够根据内容回看效果选择最合适的码率。播放器是用Action语言编写,能够运行在Flash或者Adobe AIR框架下。Adobe提供了一个参考视频播放器,称为Open Source Media Framework(OSMF),在互联网上已经有一些flash/java播放器基于这种方式编写,这些播放器基本上是完全定制化播放HDS视频流。

对于内容保护而言,HDS唯一支持的DRM方案是其自身Adobe DRM系统,Flash Access服务器,Flash Access方案是一个很有特点的加扰系统,版权管理中有很灵活的控制权,它能够对保护层进行保护也能够对视频文件切片进行保护。

u 优势

Adobe成功在月在互联网早期发展过程中将其框架作为一种强制插件嵌入到网页中。同时,Flash插件到今天已经有能力自动更新,现在几乎所有的PC都能播放Adobe HDS码流。HDS在Adobe为VOD应用提供了丰富的文档,他们能够为开发送人提供一些参考源代码以支持对方开发有价值的第三方插件。基于HTTP的流的优势是:不需要防火墙开普通web浏览器所需端口以外的任何端口。允许视频切片在浏览器、网关和CDN的缓存,从而显著降低源服务器的负载。

u 不足

Apple目前在Apple产品中不支持Flash。但是对于Android平板电脑和智能手机,Flash的支持非常依靠具体的Android版本,即使是特定Android版本,Flash支持也依赖硬件平台厂家。HDS只支持自己的DRM方案,从Adobe开放出来的文档中也很难看出Flash Access是如何工作的,尤其是直播应用。和Apple HLS一样,HDS码流目前只能提供一个音轨。在改进版的系统中对于点播节目能够提供可替换音轨,但是直播节目不具备这个功能。

3. Microsoft MSS (Microsoft Smooth Streaming)

Smooth Streaming是微软提供的一套HAS解决方案,是IIS的媒体服务扩展,用于支持基于HTTP的自适应串流,终端采用Silverlight技术。MSS 的文件切片格式为 mp4(fragmented-mp4),索引文件为ism/ismc,同时支持直播和时移。

在2010年11月发布的 IIS Media Services 4.0 中,微软引入了一项使 Live Smooth Streaming H.264/AAC 视频动态封装成 Apple HLS 格式的功能,直接提供给 iOS 设备,而不需要再次编码。同时支持直播和点播把1080P全高清视频发送到Silverlight客户端。如图-7所示。

图 Microsoft Smooth Streaming技术框架

微软的Smooth Streaming选择了MPEG-4格式为媒体封装格式,Smooth Streaming将每个分片都用MPEG-4封装成一个MPEG-4的Fragment,但是每个码率对应的内容存储成了一个完整连续的MP4文件,事实上媒体仅仅是做了虚拟的分片。在实际播放过程中,根据终端的请求将每个Fragment独立分发给终端。

MP4文件的基本单位是“BOX”。这些“BOX”中即包含数据也包含元数据。MP4支持在一个文件内容以不同的方式来组织数据和元数据。在大多数媒体场景中,将元数据放在负载数据之前对于播放器的读取时非要有用的,因为播放器可以在播放之前可以更多的知道负载数据信息。然而,不太可能在整个数据流前写入元数据。较少的元数据信息意味着小的数据包头,有利于更快的启动播放器。基于以上理由MP4 文件格式中允许存在一系列小的元数据、负载数据对,而不是一个长的元数据/负载数据对。微软Smooth Streaming存储媒体格式如图所示。

图 Smooth Streaming存储媒体格式

从上图中我们能看到在一个外壳中,文件以文件元数据信息(moov)开始,但是负载带元实际包含在片BOX单元中,在这些BOX中又携带了准确的文件片元数据(moof)和媒体数据(mdat),格式以mfra索引BOX结束。

微软在MP4 ISO媒体文件描述格式的基础上自定义了BOX组织数据结构和BOX信息。为了区分Smooth Streaming文件和标准的“vanilla”MP4文件格式,微软使用了新的文件扩展:*.ismv(视频和音频)和*.isma音频。

当一个播放器客户端向IIS服务器请求一个视频时间片段时,服务器会在MP4文件中寻找合适的文件片,并将其取出封装完成后传输给客户端。文件片经过封装后可以有效提高传输效率。微软Smooth Streaming传输媒体格式如图所示。

图 Smooth Streaming传输媒体格式

Smooth Streaming终端基于Silverlight进行实现,Silverlight可完成MPEG-4文件格式的解析、HTTP下载以及码率的切换。在Smooth Streaming的设计方案中,微软使用了更加复杂的设计。视频文件不需要被切成无数小的文件片,而只是在传输时按照文件片的方式传输,而这些文件片实际上来自MP4文件中的GOP片段。这样的设计需要在服务器端和客户端实现以下两点改变:服务器必须能将URL转换成在MP4文件中的准确的偏移范围;客户端能够支持更加开放的请求格式;

客户端播放器首先从Smooth Streaming服务器上获取*.ismc客户端文件块索引文件文件。该文件告诉播放器节目内容的编码格式、码率、清晰度以及可用数据块列表。

在Smooth Streaming中客户端请求文件数据块的URL以以下方式描述:

http://video.foo.com/NBA.ism/Qualitylevels(400000)/Freaments(video=610275114)

在以上URL中出现的数字分别代表了编码码率和在一个单位时间段内(通常是100ns)片段开始位置的偏差值。在服务器端收到客户端请求后,Smooth Streaming在服务器文件块索引文件文件中查找码率,并寻找对应的.ismv .isma文件。然后基于tfra索引单元(BOX)找到相应片段(moof+mdat)和开始时间偏差值,读取相关的MP4文件封装后发送给客户端。这个部分的设计对于整个传输设计是至关重要的。客户端下载的内容会在网络中自动缓存,如果其他的客户端请求了同样的内容便会从缓存中获取这样就大大节省了服务端的压力。

u 优势

Smooth Streaming在一个码流中能够支持多声道和多个主题。Smooth Streaming已经将DRM很好的集成到其中。虽然,微软也有自己的PlayReady解决方案,它也明确的支持其他的DRM厂家与Smooth Streaming的集成。在网页媒体领域,Smooth Streaming在高清直播中获得了很好的图像质量,与以flash技术为基础的视频网站相比,Silverlight能够根据客户端的解码能力去选择合适的节目码率进而保证节目的流畅。

u 不足

微软的Smooth Streaming方案非常详细,所以部署起来很费时间,结果是该方案不如HLS那样容易被接受。尽管Smooth Streaming以Web媒体为目标,但是客户端必须嵌入Silverlight,及时是IE浏览器也必须安装额外的插件。像HLS一样,Smooth Streaming不能依靠网络中心服务器来管理带宽,这些工作必须依靠客户端设备。

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

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

流媒体技术介绍(中篇)相关推荐

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

    网易视频云分享:流媒体技术介绍(上篇) 网易视频云2016-04-14 11:49:49 创业 媒体 技术 阅读(949)评论(0) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代 ...

  2. 流媒体技术介绍(上)

    流媒体就是指采用流式传输技术在网络上连续实时播放的媒体格式,如音频.视频或多媒体文件.所谓流媒体技术就是把连续的影像和声音信息经过压缩处理后放上网站服务器,由视频服务器向用户计算机顺序或实时地传送各个 ...

  3. 直播APP开发:直播源码流媒体技术介绍!

    目前,直播市场正以它独特的魅力吸引着不同地区.不同国家的人的注意,直播APP开发需 求也遇到了喷发期,而在直播APP开发中的流媒体及技术问题也成为大众关注的对象. 1.首先我们来人士一下流媒体服务器 ...

  4. OTT交付如何超越传统广电交付,为用户带来高质量视频网络——对话Synamedia流媒体技术发展经理卢彦林...

    编者按: Synamedia是一家专门为付费电视运营商提供端到端解决方案的公司,在全球范围内拥有众多知名客户.每天有一亿用户通过Synamedia产品搭建的网络收看一百多万个视频广播节目.LiveVi ...

  5. 智能会议系统(34)---Android语音通话实现方案及相关技术介绍

    Android语音通话实现方案及相关技术介绍 Android语音通话实现方案及相关技术介绍 语音通话 Step1语音采集和输出 Step2编解码方式 Step3网络传输 Step4去噪声消回音 语音通 ...

  6. 《Getting Started with WebRTC》第二章 WebRTC技术介绍

    <Getting Started with WebRTC>第二章 WebRTC技术介绍 本章作WebRTC的技术介绍,主要讲下面的概念:   .  怎样建立P2P的通信   .  有效的信 ...

  7. [总结]RTMP流媒体技术零基础学习方法

    本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验.也为后来学习RTMP流媒体技术的人们一个参考.本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工 ...

  8. 流媒体技术原理与应用

    流媒体技术原理与应用     南京邮电学院纪其进等 摘要:流媒体是网络环境中的一种新的媒体形式,有着广阔的应用前景.本文初步探讨了流媒体技术的原理及实现流媒体技术的协议,介绍了流媒体技术当前和未来可能 ...

  9. 流媒体技术在宽带网络的应用与发展

    流媒体技术在宽带网络的应用与发展 作者/来源:中国电信 梁晓辉 游志胜 摘 要 文章介绍了流媒体的概念与特点,深入分析了流媒体系统及其关键技术,研究了流媒体技术在宽带网络中的应用及在国内外的发展情况, ...

最新文章

  1. osg中运用Shader(osg初级篇2)
  2. 继承、实现、依赖、关联、聚合、组合的联系与区别
  3. h5列表页的性能优化
  4. 【Windows系统】用户配置文件删除
  5. linux /etc/rc.d/目录的详解
  6. C语言两班平均成绩,用C语言编程平均分数
  7. GBDT和LR结合使用分析
  8. mysql故障切换检测_启动并测试MHA对MySQL Master监测与故障切换过程
  9. 【BZOJ1412】【codevs2351】狼和羊的故事,最小割
  10. Java修改带回显吗_修改的是根据自定义标签进行处理回显
  11. imagenet ILSVRC2012下载及其matlab处理方法
  12. Java微信小程序的授权登陆
  13. 【读书笔记】致加西亚的信(二)
  14. 史上最全数据库笔记(上)
  15. 【毕业设计】答 辩 技 巧 二(以一个过来人的身份,祝各位答辩 过 过 过)
  16. 三个蛤蜊三块肉才能称得上“老板”
  17. WinRAR 去广告的姿势
  18. [译] 开发者(也就是我)与Rx Observable 类的对话 [ Android RxJava2 ] ( 这到底是什么?) 第五部分...
  19. java安装路径有要求吗_jdk安装以及Java环境配置
  20. 美国计算机科学 嵌入式,申请美国计算机科学(CS)专业,这里有四个中肯建议!...

热门文章

  1. css3切角文本框_html – 用边框制作切角
  2. k--最近邻算法(KNN)
  3. 银从个人理财在线计算机怎么使用,2017银行从业个人理财计算器使用方法
  4. 谈谈传递闭包以及自己杂想
  5. 戴维宁(也叫戴维南)定理是什么?如何证明?_戴维宁定理等效电路求解_戴维宁定理习题
  6. Python面向对象基本概述
  7. 论文阅读:**CTF: Anomaly Detection in High-Dimensional Time Series with Coarse-to-Fine Model Transfer
  8. ltb火箭_火箭的大脑
  9. 【Hive】03-数据类型和文件格式
  10. 《U-Net: Convolutional Networks for Biomedical Image Segmentation》学习笔记