HLS与DASH流媒体协议对比

HLS(HTTP Live Streaming)协议

是由苹果公司实现的基于 HTTP 的流媒体通信协议,并成为 QuickTime 和 iPhone 软件系统的一部分,苹果的 iPad 也有支持 HLS 的能力。HLS 即支持直播,也支持点播。

HLS 传出的视频文件为基于 MPEG-2 TS 文件的切片,每个媒体切片在服务器上单独存放。在一个流媒体文件分片过程中,视频处理程序读取连续的输入流,将其切割为等长的切片,默认长度为10秒。该程序还会生成一个 m3u8 格式列表文件,其中包含了切片列表和每个切片的具体信息。

m3u8 是 m3u 列表格式的扩展,m3u8 文件具有两层分级架构,在文件起始处用 #EXTM3U 标签以示区别。在一级列表中,以 #EXT-X-STREAM-INF 标签起始提供各比特率的视频列表地址,该地址可以链接到另一个二级 m3u8 文件上,二级 m3u8 列表提供了所有同一比特率的视频切片的时长和 URL 地址。

HLS 协议的流媒体传输过程是首先服务器在资源准备阶段将不同比特率的食品切片并分别存储,同时生成两级或更多级的 m3u8 文件。传输开始时,客户端首先从服务器上请求并下载 m3u8 文件,通过解析该文件得到视频切片信息,选择适合当前状况的切片,提取出该切片的 URL 地址,直接通过该地址向服务器发起请求。因此,服务器端不需要任何额外的处理,任意 Web 服务器都可以配置成支持 HLS 协议的服务器。

DASH协议

除了 HLS ,其他的动态自适应流媒体技术还有微软的 IIS Smooth Streaming,Adobe 公司的 Dynamic Streaming 等。这些共存的协议采用的技术80%是相同的,但是 100% 是不相兼容的。为了对业界存在的多种自适应流技术进行规范,MEPG 推出 MEPG-DASH 标准,旨在为动态自适应流媒体技术创造一种同一的协议标准。DASH 也得到了许多公司的支持,Apple、Adobe、Microsoft、Netflix、Qualcomm 表示只要 DASH 完成,就会支持这个标准。

HLS 和 DASH 的区别主要如下图:

HLS 和 DASH 的区别

基于 MEPG-DASH 流媒体协议的系统架构如下图:

DASH 流媒体系统架构

MPEG-DASH 客户端首先要获取 MPD 文件,MPD 文件可以通过 HTTP、Email、广播或者其它方式传输。通过解析 MPD 文件,客户端可以了解节目的时间、可用性、类型、带宽及码率等信息,这样客户端可以选择合适码率进行播放。客户端在节目内容开始缓冲时会检测网络带宽变化并选择多大码流的节目。

MPEG-DASH 只定义了 MPD 和文件片段格式,并没有定义二者的封装格式以及客户端怎样获取二者。