如何在Safari中使用HTTP Live Streaming启用视频搜索?

10
我有一个带有播放列表中的#EXT-X-PLAYLIST-TYPE:EVENT的HLS流。在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播放列表应该可以搜索,那么我错过了什么?

你使用哪种服务器来发布直播流?因为我认为服务器端需要进行一些配置。 - akmozo
@akmozo HLS 只是通过任何 Web 服务器提供静态文件。 - Tom Dalling
我刚刚花了最后三个小时摆弄这个,却一无所获。我只能告诉你哪些方法不起作用:1)通过完全删除“EXT-X-PLAYLIST-TYPE”来创建实时播放列表;2)为每个片段设置“#EXT-X-PROGRAM-DATE-TIME”;3)使用iframe-playlist-generator创建主播放列表+变体播放列表+仅限iframe的播放列表。抱歉... - janfoeh
@janfoeh 我有一种隐隐的感觉,这实际上是MPMoviePlayerController或其基础组件中的一个错误。虽然我找不到任何权威的证据证明它曾经可以工作。 - Tom Dalling
我已经在Safari 7 / Mavericks,Safari 8 / Yosemite和Mobile Safari for iOS 8中尝试过了 - 不管是什么,它已经存在一段时间了。问题是...你有没有看过苹果自己的主题演讲直播?我看过,但我不能记得在那里看到过工作。我也找不到另一个允许它的HLS实时源。您是否拥有开发人员帐户,可以访问Apple的“mediastreamvalidator”? - janfoeh
@janfoeh 是的,我有一个开发者账户。 - Tom Dalling
2个回答

3
我找到的解决方法是一个权宜之计:
<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上跳转到较早的段落。

-2
如果之前的片段是不可变的,那么Safari中的视频播放器不应该允许用户向后寻找到视频的早期部分吗?
是的,但在实时会话期间索引文件中可用的文件数量限制了客户端进行播放/暂停和寻找操作时的行为。
请尝试使用至少3个文件在您的索引文件中,没有#EXT-X-ENDLIST,您应该能够寻找。
当您将#EXT-X-ENDLIST添加到播放列表中时,您正在标记事件已经结束,因此无论您的播放列表中有多少个文件,都可以进行寻找。

文件数量似乎没有任何影响。 - Tom Dalling
你在使用Windows吗?你的计算机上安装了哪个版本的QuickTime? - Francisco Félix
最新版本的OSX,配备最新的Quicktime。 - Tom Dalling
谢谢。您能否编辑您的问题并附上您正在使用的所有代码?我会非常感激,并且相信这将使任何试图解决此问题的人更容易。 - Francisco Félix
我使用的整个代码基本上是<video src="prog_index.m3u8" height="480" controls></video> - Tom Dalling

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接