【问题标题】:Getting HLS livestream in sync across devices跨设备同步 HLS 直播
【发布时间】:2019-08-05 07:40:02
【问题描述】:

我们目前正在将 ExoPlayer 用于我们的一个应用程序,它与 HQ Trivia 应用程序非常相似,并且我们使用 HLS 作为流协议。

由于游戏的性质,我们试图让该流的所有观众都具有相同的延迟,基本上是为了让他们保持同步。

我们注意到,在当前的后端配置下,延迟在 6 到 10 秒之间。基于这一事实,我们假设“强制”玩家以更大的延迟(15 秒,离直播边缘更远)进行游戏是安全的,这样可以在所有设备上实现相同的(恒定)延迟。

我们使用 EXT-X-PROGRAM-DATE-TIME 标签来获取当前播放内容的服务器时间,并且我们还有一个带有当前时间 (NTP) 的主时钟。我们不断比较 2 个时钟以检查当前延迟。我们会暂停播放器,直到它达到所需的延迟,然后我们会恢复播放。

这个解决方案的问题是延迟可能会随着时间的推移而变得更糟(累积延迟),如果延迟太大(超过指定的步数),我们别无选择,只能重新开始播放并重做上述步骤临界点)。在重新启动播放器之前,我们还尝试稍微提高播放速度,直到达到指定的延迟。

exoPlayer 实例使用 DefaultLoadControl、DefaultRenderersFactory、DefaultTrackSelector 设置,媒体源使用 DefaultDataSourceFactory。

服务器端配置如下: cupertinoChunkDurationTarget:2000(默认值:10000) CupertinoMaxChunkCount:31(默认:10) cupertinoPlaylistChunkCount:15(默认:3)

我的第一个问题是,这是否可以通过 HLS 之类的协议实现?为什么玩家漂移的延迟越来越多? 考虑到我们的特定用例,是否有更好的 exoPlayer 实例设置? 有没有更好的方法可以在所有播放设备上实现恒定的播放延迟?在尝试实现这种行为时,服务器端的参数有多重要?

我非常感谢任何形式的帮助,因为我已经走到了死胡同。 :)

谢谢!

【问题讨论】:

    标签: live-streaming http-live-streaming exoplayer exoplayer2.x


    【解决方案1】:

    解决这个问题的唯一方法是:

    https://netinsight.net/product/sye/

    他们的解决方案包括无漂移的帧精确同步和有状态 ABR。这可能无法使用基于 http 的协议来完成,因此它们的解决方案是建立在 UDP 传输之上的。

    【讨论】:

    • 除了提供链接之外,您能否扩展相关信息并在您的问题中进行解释?
    • 不,他很好。我也不想做那个工作
    猜你喜欢
    • 1970-01-01
    • 2019-10-26
    • 2018-06-03
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    相关资源
    最近更新 更多