跨机器调度和/或同步HTML5视频播放

时间:2016-06-01 19:55:25

标签: javascript html5-video

我在3台不同的机器上运行3个持续时间相同的视频,并使用websocket服务器同步它们。我可以在机器之间获得非常准确的时间同步,但更改任何视频的currentTime属性会导致显着且不可预测的延迟。

过去使用WebAudio,我已经能够使用start()安排播放音频源,但video.play()没有此功能。而且几乎不可能说“此时播放视频的这一部分”。

这不是HTML5视频的选项吗?是否有一个我应该尝试的开箱即用的解决方案(例如媒体流,画布)。我正在使用Chrome,但我可以轻松使用其他浏览器。

1 个答案:

答案 0 :(得分:2)

不幸的是,没有方法可以用这种方式同步视频源。

设置currentTime的问题在于它是异步操作。设置时间后,无法保证视频会立即播放。浏览器将检查缓存,可能从网络加载并在视频实际播放之前进行解码(当它通过seeked事件报告时)。

只要我们错过Web Audio API中的 cue 方法(也需要数据驻留在内存中),我们的选项有限。

我们可能会得到一个解决方案,就像使用两个视频元素“双缓冲”时间/位置,当预定时间到期,开始和交换第二个元素(可能会或可能不会)根据系统,浏览器,网络,缓存,服务器响应时间等工作。)。

根据视频的大小和长度,您可以预先加载图片而不是视频。这将允许即时同步,但代价是初始加载时间和内存。

我认为更稳定的解决方案是使用专用解决方案同步服务器端上的流,并将浏览器用作被动客户端。 VideoLANOBS可以执行此操作,或者与广播相关的一些商业专用软件/硬件能够处理同步参考信号。

只需2美分。