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
#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倍的目标持续时间,直到我们重新加载