0

我们通过 api 调用知道 DRM 实时内容长度。那是60分钟。我们正在使用 SimpleExoPlayer 播放此 DRM 内容。准备播放器的代码片段如下。

player?.playWhenReady = false
player?.setMediaSource(mediaSource)
player?.prepare()

问题:我们喜欢为 DRM 实时内容提供搜索选项。问题是,在任何时候,我们的视频都只能播放 5 分钟。使用播放器 api 调用检查视频的长度。player?.getDuration()它总是5分钟的持续时间。

这意味着:直播内容长度为 60 分钟。当前位置为 30 分钟。在这里玩家只能在 25 分钟到 30 分钟之间回溯。

寻求定位:

player?.seekTo(26*60*1000) (26 Minutes Works)
player?.seekTo(10*60*1000) (10 Minutes NOT Working)
player?.seekTo(45*60*1000) (45 Minutes NOT Working)

但我们喜欢在任何地方寻找1分钟到30分钟时间的玩家。我们无法从文档和技术讨论论坛中找到任何解决方案。

任何建议或线索都会对我们有所帮助。

4

1 回答 1

0

当 HLS 或 DASH 实时内容被流式传输时,流式传输服务器通常会设置一个窗口以供内容的可用性。

即使没有计划追赶或“实时倒带”服务,服务器也必须考虑网络延迟等,并提供合理的窗口以允许客户端请求分段。

一旦这个窗口期满,服务器将(通常......)不再为这些段提供服务,因此在此时间之前对段的任何请求都会导致某种错误响应。

如果计划是支持倒带,那么通常会使用更大的窗口。

您可以检查清单以查看给定流的设置:

  • 对于 DASH,请查看清单文件(.mpd 文件)中的“timeShiftBufferDepth”
  • 对于 HLS,请查看实时 m3u8 流 - 您将看到正在更新的分段列表和较旧的分段列表。请注意,通常可以通过没有“EXT-X-ENDLIST”标签来识别 HLS 直播流。这是指示将不再有段的标记。

播放器可以在播放后将内容存储在本地以允许倒带,但这很少是默认行为。如果您确实将内容存储在播放器端,您还需要确保解密内容所需的任何 DRM 许可证在您播放时仍然有效。您也只能倒退到播放器开始存储内容的点,这在许多情况下可能不是必需的功能。

于 2021-10-13T14:08:36.303 回答