1 概述
HTTP Live Streaming(HLS)是一个由苹果公司提出的基于 HTTP 的流媒体网络传输协议。是苹果公司 QuickTime X 和 iPhone 软件系统的一部分。它的基本原理是在服务端把文件或媒体流分成许多小块的基于 HTTP 的文件或媒体流,客户端在播放码流时,可以根据自身的带宽及性能限制,在同一视频内容的不同码率的备用源中,选择合适码率的码流进行下载播放。在传输会话开始时,客户端首先需要下载描述不同码流元数据的 M3U8 索引文件,用于寻找可用的媒体流。
与基于 UDP 的 实时传输协议(RTP)协议不同,HLS 只请求基本的 HTTP 报文,因此可以穿过任何允许 HTTP 数据通过的防火墙或代理服务器。这也便于使用传统的 HTTP 服务器作为源,并广泛使用基于 HTTP 的内容分发网络来传输媒体流。
2 HLS 协议简介
HLS 协议格式可简单归纳如下:
网络协议: HTTP
封装格式: TS
编码格式: 视频编码格式 -> H.264 音频编码格式 -> MP3、AAC、AC-3
索引文件: M3U8
需要说明的是,目前已有厂家实现了 H.265 的 HLS 编码。在封装层面,除了 MPEG-2 TS 封装外,在 WWDC2016 上,苹果宣布了HLS对分段 MP4(fMP4)文件字节寻址的支持,为 HLS 向 MPEG-DASH 的兼容提供了可能。
根据媒体流的生成及流向,HLS 的结构可划分为如下几个部分: