如何在多个客户端上同步播放YouTube视频?

Ant*_*ony 13 php youtube ajax jquery real-time

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

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

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

leg*_*ter 5

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

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

由于您想使用 PHP 并让事情变得简单,那么您最好的解决方案是将实时通信层(用于保持用户视频同步)外包给托管服务,例如我工作的Pusher 。这意味着您不需要维护持久连接,您可以使用 Pusher 在用户/客户端之间传递有关视频状态的实时事件。

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

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

注意:这实际上可能会成为一篇非常有趣的博客文章,所以如果您有兴趣,请告诉我,我会看看我能做什么。


Ale*_*exB 2

您可以通过以下几种方法来实现此目的:

  • 理想的解决方案是使用实时协作协议和服务器(例如XMPPOpenFire)设置并开发自定义模块,该模块将允许您来回传递自定义节。不幸的是,它不仅不能满足您对所涉及技术的要求,而且实施起来也相当复杂,但结果是惊人的。

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

  • 最后,您需要使用 AJAX 轮询(通常的方法或长轮询),在这种轮询中,您将阻止服务器端脚本执行,直到获得一些可用数据。请参阅此链接以获取更多参考。