HLS(HTTP Live Streaming)是苹果公司提出的基于HTTP动态流传输协议。客户端可以根据网络带宽的变化,智能切换至对应码率、分辨率的媒体流进行播放,支持音视频的点播和直播。HLS可以通过HTTPS对媒体加密传输和身份认证。
HLS由服务器组件、分发组件、客户端三个部分组成。
服务器组件
将采集的音视频编码为MPEG-2传输流发送给流分段器,流分段器将编码后的媒体分成一系列时间持续时间相等的小媒体文件,以.ts文件(MPEG-2传输流文件)保存。同时流分段器还会创建一个.m3u8的索引文件,记录所有分片后小媒体文件的位置。分段器还可以对每个媒体段加密,并创建秘钥文件,目前HLS支持16个字节秘钥的AES-128加密。
分发组件
存储分片后的媒体文件(.m3u8文件和.ts文件),将客户端请求的媒体资源分发给客户端。
客户端
根据URL获取媒体索引文件(.m3u8),通过索引文件的内容获取相应的媒体流片段以及解密秘钥,当获取到的媒体片段数量足够多时,客户端便开始渲染呈现给用户。
m3u8文件
规范
- #EXT-X-TARGETDURATION: 每片最大时长(秒)
- #EXT-X-MEDIA-SEQUENCE: 起始播放位置,默认0。
- #EXT-X-KEY: 加密信息
- #EXT-X-VERSION: 版本
- #EXTINF: 播放时长&