如何使用HTTP实时流在Safari中启用视频搜索



我有一个 HLS 流,播放列表中有#EXT-X-PLAYLIST-TYPE:EVENT。这会在 Safari 中正确播放,但在将#EXT-X-ENDLIST追加到播放列表之前,查找不可用。

据我了解,到目前为止,带有#EXT-X-PLAYLIST-TYPE:EVENT的播放列表包含视频的所有片段。也就是说,可以附加新段,但不能删除或修改现有段。如果前面的片段实际上是不可变的,那么 Safari 中的视频播放器不应该允许用户向后搜索到视频中的较早部分吗?相反,播放器只是说"实时广播",并且在将#EXT-X-ENDLIST附加到播放列表之前没有清理控制。

技术说明 TN2288 是这样说的(强调我的(:

事件播放列表由值为 EVENT 的 EXT-X-PLAYLIST-TYPE 标记指定。事件播放列表看起来就像一开始的实时播放列表。它最初没有 EXT-X-ENDLIST 标签,表示新的媒体文件将在可用时添加到播放列表中。但是,使用 EVENT 标签,您根本无法更改播放列表;您只能将新段附加到文件末尾。它们不能在前面添加。在事件结束之前,将添加新区段,此时将附加 EXT-X-ENDLIST 标记。顾名思义,事件播放列表通常用于音乐会或体育游戏等事件,您希望允许用户从一开始就在事件中的任何位置进行查找

在我看来,这种 HLS 播放列表应该可以寻找,所以我错过了什么?

我找到的解决方案是一种解决方法:

<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<video id="video" controls="controls"></video>
<script>
var video = document.getElementById('video');
var url = 'http://awesome.app/playlist.m3u8';
if (Hls.isSupported()) {
    var hls = new Hls({
        debug: true
    });
    hls.loadSource(url);
    hls.attachMedia(video);
    hls.on(Hls.Events.MANIFEST_PARSED, function () {
        video.play();
    });
}
</script>

以上内容从最近上传的片段开始,并允许在 Safari、Chrome 和 Firefox 上查找较早的片段。

如果前面的片段实际上是不可变的,那么 Safari 中的视频播放器不应该允许用户向后搜索到视频中的较早部分吗?

是的,但实时会话期间索引文件中可用的文件数会限制客户端在执行播放/暂停和查找操作时的行为。

尝试在索引文件中至少使用3个文件,没有#EXT-X-ENDLIST,您应该能够查找。

当您#EXT-X-ENDLIST播放列表时,您将事件标记为结束,因此无论您的播放列表中有多少文件,您都可以查找。

最新更新