Algorithm 使用什么算法/方法同步多个视频播放器
动机: 我目前正在尝试在两个联网的Raspi上同步两个视频。我尝试从桌面(http和udp)进行实时流传输,但每个raspi仍然以明显的延迟打开流。接下来,我尝试在raspi上安装vlc并与桌面vlc同步,但也没有成功。我尝试使用shell脚本在两个raspis上几乎同时启动omxplayer,但也失败了。最后,我使用一个C脚本在几乎相同的时间启动两个OMXPlayer,但也失败了。最终,我认为不可能控制omxplayer何时开始实际播放视频文件 当前进度: 因此,现在,我正在修改omxplayer的代码,以使用套接字同步两个omxplayer,但我想知道类似vlc的东西在同步其视频客户机时采取了什么方法,从而避免重新发明轮子。我可能是错的,但我注意到,通过查看详细的输出和调试语句,一个播放器相对于另一个播放器会损失时间,例如在播放视频时,这种差异会逐渐增大,2-3分钟后超过200毫秒。我觉得这非常令人不安。这意味着2小时后,差值将为Algorithm 使用什么算法/方法同步多个视频播放器,algorithm,video,media-player,Algorithm,Video,Media Player,动机: 我目前正在尝试在两个联网的Raspi上同步两个视频。我尝试从桌面(http和udp)进行实时流传输,但每个raspi仍然以明显的延迟打开流。接下来,我尝试在raspi上安装vlc并与桌面vlc同步,但也没有成功。我尝试使用shell脚本在两个raspis上几乎同时启动omxplayer,但也失败了。最后,我使用一个C脚本在几乎相同的时间启动两个OMXPlayer,但也失败了。最终,我认为不可能控制omxplayer何时开始实际播放视频文件 当前进度: 因此,现在,我正在修改omxplay
60*200ms=12000ms
或大约12s
。我认为现代计算的精度更像原子钟,在1000小时的镜头后可能会丢失1s,因此我认为仅仅同步一次提要就足够了
问题:
如果不同的玩家必须同步,像vlc这样的东西是如何做到的
注意:我没有流式传输实际的视频文件,因为它们都是通过每个RASPI上的NFS远程访问的。很抱歉,我没有直接回答您的问题,但我会这样做: 我会使用MCI(我对Windows很友好,但我认为所有其他玩家都必须是类似的)
- 在具有较小延迟的快速局域网上,您可以通过服务器向所有客户端发送时间,就是这样
- 在未知的延迟(如Internet)上,您不能将时间从服务器多次发送到每个客户端。在客户端,计算服务器和客户机时间之间的平均时间偏移量,然后将其添加到客户机时间,就是这样
- 如果客户端连接延迟太不稳定,您就倒霉了
- 播放帧
- 播放进度时间
- 播放进度百分比
希望能有点帮助。是的!我希望在场的人能如此礼貌和专业。到目前为止,我接受的最佳答案之一是您是否使用
ntp
在主机之间同步时间?vlc提供了几个选项,允许在多台主机上同步播放。您尝试过哪些选项,哪些不起作用?@J.F.Sebastian我正在使用ntp,但使用TCP消息向服务器发送信号更容易