首页 > 解决方案 > 可以通过操作 bufferBehind 来增加 Shaka 中的搜索范围吗?

问题描述

我正在尝试使用 Shaka 将实时 DASH 流的回溯时间增加到 15 分钟。默认情况下,流可以从当前时间倒退到 5 分钟。这可以通过指示玩家存储过去 15 分钟的缓冲区来实现吗?我尝试使用 bufferBehind 并将其设置为 900(15 分钟)。这似乎不起作用,并且倒带不会超出搜索范围

这是我正在使用的 DASH Live URL:https ://livesim.dashif.org/livesim/testpic_2s/Manifest.mpd

标签: html5-videolive-streamingshaka

解决方案


曾在 github 上问过这个问题并得到了帮助

简短的回答是肯定的,你可以这样做,但有一些重要的警告。

bufferBehind 是关于我们如何管理播放头移动后保存在缓冲区中的内容。但这与您想要的不同。您确实想要覆盖名为 timeShiftBufferDepth 的 DASH 属性,该属性定义了可用性窗口的宽度。

可用性窗口有效地表明“这是您可以随时请求的服务器上的内容量”。您可以使用 manifest.availabilityWindowOverride 覆盖它:

player.configure('manifest.availabilityWindowOverride', 900); 这将忽略清单的 timeShiftBufferDepth 并改用 900 秒(15 分钟)的值。播放器中的搜索范围将变为 900 秒。

但是,如果服务器实际上没有保留那么多内容,则对 900 秒前的内容的请求将导致 HTTP 404 错误,并且播放将在该位置停止。所以你不能用它来以任何方式控制服务器的行为,或者让不可用的内容可用。

当我们运行实时流(使用 Shaka Streamer)时,只有几个片段保留在可用性窗口之外。当我们将新片段上传到云存储时,我们也会删除旧片段。

因此,对于我们的内容,增加播放器中可用性窗口的大小是行不通的。根据您使用的编码器/打包器,您可能能够增加窗口大小并摆脱它。


推荐阅读