如何使用 ExoPlayer 在多个客户端同步 HLS and/or MPEG-DASH 视频?

How to synchronize HLS and/or MPEG-DASH videos on multiple clients using ExoPlayer?

我正在尝试使用 DASH and/or HLS 保证多个客户端之间的同步。每个客户端之间的同步必须在 40 毫秒以内。

直播似乎是一个显而易见的选择。然而,真正在小时间范围内获得同步的唯一方法是降低分段时间。这是唯一可行的解​​决方案吗?是否有任何标签可以帮助我将客户保持在 40 毫秒以内?

目前,我正在使用 FFMPEG 将视频和音频编码为直播内容。

这里有几个不同的问题:

  • 'Live time' - 假设是正在广播的事件实际发生的实时时间,例如足球在比赛中踢球的实际时间,然后实现完整的结束在 40 毫秒内结束交付到最终屏幕正在突破任何可能的交付技术的界限。当然 HLS 和 DASH 流不会给你。

  • 您的目标可能是让每个最终用户与其他最终用户之间的差异不超过 40 毫秒 - 例如每个用户接收广播都有 10 秒的延迟,但每个用户的延迟是相同的正负 40 毫秒。这仍然是一个相当棘手的问题,因为除非您有一些所有设备都同步的公共时钟,否则您将依赖某种机制来指示每个设备与某些中央或分布式控制机制之间的流中的位置,并且再次, 40 毫秒对于允许小消息来回传输以及计算任何时差和调整所需的任何处理来说并不是很多时间。

同步 Internet 传输的媒体流不是一个简单的问题,但至少有一些工作可以帮助您获得一些想法 - 请参阅此处的一些示例: