跳到主要内容

02-HLS协议

HLS协议是一种苹果开发的视频协议,用在Safari浏览器中,

HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。 具体就是采用video标签请求一个M3U8文件, 在M3U8文件中写着具体的内容用来请求ts片段文件 3.png

特殊的多重M3U8文件

4.png

M3U8文件的工作流程

首先, 下载M3U8文件, 然后在M3U8文件里面有内容,内容根据变量的设置不同,可以分为三种 Live playlist 动态列表 Event playlist 静态列表 Vod playlist 全量列表 , 注释: 全量列表就是不变的m3u8

动态列表

5.png

静态列表

6.png

全量列表

7.png

TS文件的解析

 ts文件分为三层:ts层Transport Stream、pes层 Packet Elemental Stream、es层 Elementary Stream. es层就是音视频数据,pes层是在音视频数据上加了时间戳等对数据帧的说明信息,ts层就是在pes层加入数据流的识别和传输必须的信息

8.png ts层的内容是通过PID值来标识的,主要内容包括:PAT表、PMT表、音频流、视频流。解析ts流要先找到PAT表,只要找到PAT就可以找到PMT,然后就可以找到音视频流了。PAT表的PID值固定为0。PAT表和PMT表需要定期插入ts流,因为用户随时可能加入ts流,这个间隔比较小,通常每隔几个视频帧就要加入PAT和PMT。PAT和PMT表是必须的,还可以加入其它表如SDT(业务描述表)等,不过hls流只要有PAT和PMT就可以播放了。

PAT表:他主要的作用就是指明了PMT表的PID值。 PMT表:他主要的作用就是指明了音视频流的PID值。

音频流/视频流:承载音视频内容。 10.png