我怎么知道我是否已经播放了一段M3U8视频?

时间:2018-01-11 16:42:28

标签: live-streaming http-live-streaming hls m3u8

我正在写一个m3u8播放器并且有一个小问题。我试图播放的一个m3u8视频返回的媒体序列与段文件名无关,文件名永远重复。我怎么知道我是否已经播放了一个特定片段?

这就是请求在几秒钟内的样子:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:5609
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:10
#EXTINF:10.000000,
channel001.ts
#EXTINF:10.000000,
channel000.ts

然后几秒钟后:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:5610
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:10
#EXTINF:10.000000,
channel000.ts
#EXTINF:10.000000,
channel001.ts

几秒钟后再说:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:5611
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:10
#EXTINF:10.000000,
channel001.ts
#EXTINF:10.000000,
channel000.ts

因此段名相同,媒体序列并没有告诉我多少。我怎么知道我是否已经玩过那些特定的片段?

感谢。

1 个答案:

答案 0 :(得分:0)

细分名称并不重要,您始终使用媒体序列。每次从播放列表中删除片段时,MEDIA-SEQUENCE都会递增。

  

第3。媒体细分

     

...

     

媒体播放列表中的每个片段都有一个唯一的整数媒体序列      数。媒体中第一个段的媒体序列号      播放列表为0或在播放列表中声明(第4.3.3.2节)。      每个其他段的媒体序列号等于      媒体序列在它之前的段的编号加上一个。

  

<强> 6.3.5。确定要加载的下一个部分

     

...

     

要加载的第一个段通常是客户端的段      选择先播放(参见第6.3.3节)。

     

为了正常播放演示文稿,请将下一个媒体片段发送到      load是介质序列号最小的那个      比加载的最后一个媒体片段的媒体序列号。

RFC 8216 - HTTP Live Streaming