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


How to play YouTube videos in sync on multiple clients?

我希望了解如何建立一个web应用程序,允许多个用户在他们的计算机上同步查看相同的YouTube视频。例如synchtube.com或watch2gether.com

我正在寻找一种简单的方法,可以使用PHP, jQueryApache等常见技术实现。我目前正在考虑沿着轮询的路线(或彗星长轮询,但这需要更复杂的服务器设置,我希望避免),类似于Ajax聊天应用程序的实现方式-即客户端不断检查服务器,看看哪个视频正在播放。然而,我怀疑这里会有延迟问题,所以视频不会完全同步。我想不出更好的办法了。

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

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

我知道你不想用这项技术,这只是一个很好的起点,展示你能做什么,怎么做。

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

如果你想使用YouTube视频,而HTML5并不总是可用,那么你就需要使用Player API。我没有看到类似的timeupdated事件(在HTML5视频中可用),所以你可能需要定期检查视频时间(参见播放器状态API部分)。你可以注册状态改变事件,这样你就知道用户何时暂停,停止视频等。

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

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

您有两种方法可以做到这一点:

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

  • 接下来,如果跨浏览器兼容性不是问题,你可以在HTML 5中使用WebSocket API。看看这个家伙的例子,关于如何构建一个html5 WebSocket-enable聊天。

  • 最后,您将使用AJAX轮询(通常的方法或长轮询),在这种方法中,您将阻止服务器端脚本执行,直到获得一些可用数据。