如何在多个客户端上同步播放YouTubevideo?

我希望了解如何构建一个允许多个用户在其计算机上同步观看同一YouTubevideo的网络应用。 例如, synchtube.com或watch2gether.com

我正在寻找一种可以使用PHPjQueryApache等常用技术实现的简单方法。 我目前正在考虑轮询(或彗星长轮询,但这需要更复杂的服务器设置,我希望避免),类似于Ajax聊天应用程序的实现 – 即客户端不断检查服务器以查看哪个video正在玩。 但是,我怀疑这里会出现延迟问题,因此video不会完全同步。 我还想不出更好的方法。

对于开发人员社区,对方法或代码片段的任何帮助都非常感谢!

以下是使用WebSockets和node.js保持video同步的示例: http ://softwareas.com/video-sync-with-websocket-and-node

我知道你不想使用这种技术,它只是一个很好的起点,展示你可以做什么以及如何做。

由于您希望使用PHP并保持简单,因此您最好的解决方案是将实时通信层(用于保持用户video同步)外包给托管服务,例如我工作的Pusher 。 这意味着您不需要维护持久连接,并且可以使用Pusher在用户/客户端之间提供有关video状态的实时事件。

如果您想使用YouTubevideo,并且HTML5并非总是可用,那么您需要使用播放器API 。 我看不到类似的timeupdated事件(在HTML5video中可用),因此您可能需要定期检查video时间(请参阅播放器状态API部分 。您可以注册状态更改事件,以便了解用户何时暂停,停止video等等

@ rob-w的评论为使用YouTube API提供了一些很好的见解。

注意:这可能实际上是一个非常有趣的博客文章,所以如果你有兴趣让我知道,我会看到我能做什么。

您可以通过以下几种方式完成此任务:

  • 理想的解决方案是使用实时协作协议和服务器(例如XMPP和OpenFire )进行设置并开发一个自定义模块,允许您来回传递自定义节。 不幸的是,它不仅不符合您对所涉及技术的要求,而且实施起来也相当复杂,但结果却非常壮观。

  • 接下来,如果跨浏览器兼容性不是问题,您可以使用HTML 5中的WebSocket API。查看这个人如何构建HTML 5 WebSocket启用聊天的示例 。

  • 最后,您将继续进行AJAX轮询,无论是通常的方法还是长轮询,您可以阻止服务器端脚本执行,直到您有一些数据可用。 请参阅此链接以获取进一步参考

对我来说,理想的解决方案是使用Vynch。 借助这项技术,您可以在自己的网站中嵌入一个可以观看同步video的房间。 您可以创建播放列表并与朋友和用户分享! 还有一个聊天来交换你的印象..