HLS协议

http协议传输TS片段;苹果公司推出的一种适用于回放取流的协议

抓包解析:

1 三次握手

http服务端的端口是80

 2 拉流

使用VLC拉取http live stream;服务端有M3U8和TS文件片段

 3 取流响应

 携带M3U8信息:

  M3U8头,HLS协议版本号,是否允许缓存片段;

  TARGETDURATION单个分片的最大时长;EXT-X-MEDIA-SEQUENCE 起始第一片的序号;后续依次递增

  EXTINF描述下边这个分片的持续时长,单位是秒;现有的几个分片文件名称

 4 播放分片

VLC根据抓包看是每次请求播放分片的时候都重新握手的,但是也可以不用重新握手

协议中包含刚才服务端传过去的分片的名称

 5 返回200 并开始传输TS

 

TS188字节一个小包,一次可以发送多个TS包;TS的每个188字节的包中,第一个字节是0x47

 6 响应信息详解

 

 

 下边的包是视频数据;TS的视频使用的PES包头,之后就是H264数据;解析帧的时间戳,在PES包中

其中的PUSI变量可以标识改包是否是PES包中的第一包;用于断帧;CC是每15个包一循环,但是并不是15个包以内就能完整表示一帧音视频;

 7  PES解析

里边会携带音视频头 E0,C0;长度(可能没有);时间戳;扩展信息

 

 7 HLS 协议当首次传输的M3U8中的片段都播放完了,怎么穿后续的M3U8

 当第一次传输的M3U8信息里的文件都播放完了,新的M3U8会携带新序列号(续接上一个M3U8的序列号)的一批文件传给客户端

客户端根据M3U8文件中的 #EXT-X-TARGETDURATION 字段(指定单个分片最大持续时长,如10秒)设定轮询间隔,通常为半周期(如5秒)触发新M3U8请求
示例:若 TARGETDURATION=10,则每5秒请求一次新版M3U8文件

但是有些播放器可能就按分片的TARGETDURATION来请求新的M3U8的;请求还是像第一步一项,get请求,得到M3U8的最新信息

posted on 2025-05-22 14:50  邗影  阅读(56)  评论(0)    收藏  举报

导航