Video streaming 如何检查HLS馈送是否仍然有效

Video streaming 如何检查HLS馈送是否仍然有效,video-streaming,http-live-streaming,Video Streaming,Http Live Streaming,我有一个m3u8提要,我正在寻找一种方法来检测它是否仍在使用Javascript。 当我获取url时,我仍然会得到所有区块的列表,但是live很久以前就停止了。而玩家并没有在玩它。 因此,我想知道是否有一种方法可以检查m3u8提要是否仍然有效,而无需在播放器上尝试 常见的直播行为是每x秒就有一个新的片段可用,即添加到播放列表的末尾 因此,您可以做的是加载播放列表一次,然后等待x秒,然后再次加载。如果直播流仍在运行,则播放列表中的最后一段应该已更改(即上移) 关于等待多长时间: 最初加载播放列表时

我有一个
m3u8
提要,我正在寻找一种方法来检测它是否仍在使用
Javascript
。 当我获取url时,我仍然会得到所有区块的列表,但是live很久以前就停止了。而玩家并没有在玩它。
因此,我想知道是否有一种方法可以检查
m3u8
提要是否仍然有效,而无需在播放器上尝试

常见的直播行为是每
x
秒就有一个新的片段可用,即添加到播放列表的末尾

因此,您可以做的是加载播放列表一次,然后等待
x
秒,然后再次加载。如果直播流仍在运行,则播放列表中的最后一段应该已更改(即上移)

关于等待多长时间: 最初加载播放列表时,您将在播放列表中看到一个
EXT-X-TARGETDURATION
标记,指定最大片段持续时间。所以,如果我们在重新加载之前至少等待一个目标持续时间,那么必须至少添加一个新段

例子:
  • 初始荷载:

    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-TARGETDURATION:8
    #EXT-X-MEDIA-SEQUENCE:0
    
    #EXTINF:8.0,
    https://priv.example.com/0.ts
    #EXTINF:8.0,
    https://priv.example.com/1.ts
    #EXTINF:8.0,
    https://priv.example.com/2.ts
    
  • 等待8秒,因此
    #EXT-X-TARGETDURATION:8

  • 第二次加载:

    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-TARGETDURATION:8
    #EXT-X-MEDIA-SEQUENCE:1
    
    #EXTINF:8.0,
    https://priv.example.com/1.ts
    #EXTINF:8.0,
    https://priv.example.com/2.ts
    #EXTINF:8.0,
    https://priv.example.com/3.ts
    
  • 旁注 上面的示例是一个滑动窗口直播流,即播放列表顶部的片段下拉列表和
    EXT-X-MEDIA-SEQUENCE
    递增。在这种情况下,可以选择检查
    EXT-X-MEDIA-SEQUENCE
    是否更改。但是,如果播放列表指定了
    事件
    EXT-X-playlist-TYPE
    ,则不会在顶部[1]出现任何片段。
    EXT-X-MEDIA-SEQUENCE
    不会改变。但是,检查最后一段的方法在任何情况下都有效

    [1]

    编辑 HLS规范进一步规定:

    如果媒体播放列表不包含EXT-X-ENDLIST标签,则 服务器必须使播放列表文件的新版本可用 至少包含一个新媒体段。它必须是可用的 相对于播放列表文件的上一版本 已提供:不早于目标持续时间的一半 之后,且不晚于目标持续时间的1.5倍 在那之后。这允许客户端利用网络 效率高

    所以实际上,我们必须等待至少1.5倍的目标持续时间,直到我们重新加载