#EXT-X-DISCONTINUITY-SEQUENCE标记如何在HLS m3u8文件中工作

时间:2017-11-01 03:45:48

标签: hls m3u8

我正在检查HLS的m3u8文件中的#EXT-X-DISCONTINUITY-SEQUENCE标记。  (https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.3.3) 有人可以解释它的工作方式吗?

例如,假设m3u8文件是为实时流媒体制作的,如下所示, 在段落1.060.ts 2秒后,file.000.ts也将从列表和#EXT-X-DISCONTINUITY标签中消失。 毕竟file.001.ts将成为列表中的第一个媒体段。

在此状态下,#EXT-X-MEDIA-SEQUENCE#EXT-X-DISCONTINUITY-SEQUENCE中的序列号应该是多少? #EXT-X-DISCONTINUITY应该再次放在file.001.ts行前面吗?

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-MEDIA-SEQUENCE:60
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:2

#EXTINF:0.933600,
segment1.060.ts

#EXT-X-DISCONTINUITY
#EXTINF:0.966911,
file.000.ts

#EXTINF:1.000489,
file.001.ts

1 个答案:

答案 0 :(得分:5)

标准中解释了EXT-X-DISCONTINUITY-SEQUENCE必须用于跨变体同步的原因:

  

客户绝不能假设      在不同媒体中具有相同媒体序列号的片段      播放列表包含匹配的内容

  

客户绝不假设具有相同媒体序列的片段      不同Variant Streams或Renditions中的数字具有相同的数字      在演讲中的位置;播放列表 MAY 拥有独立的媒体      序号。相反,客户必须使用相对位置      播放列表时间线上的每个片段及其不连续性      用于定位相应段的序列号

回到你的问题:

  • EXT-X-DISCONTINUITY标记了两个连续段之间的不连续性。您的不连续性介于segment1.060.tsfile.000.ts之间。 file.000.tsfile.001.ts之间没有不连续性,因此无需重新插入代码
  • 每次从播放列表中删除EXT-X-DISCONTINUITY时,您必须增加EXT-X-DISCONTINUITY-SEQUENCE
  • 每次从播放列表中删除细分时,都必须增加EXT-X-MEDIA-SEQUENCE