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

时间:2011-12-07 21:50:34

标签: php jquery ajax youtube real-time

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

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

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

3 个答案:

答案 0 :(得分:4)

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

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

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

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

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

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

答案 1 :(得分:1)

您可以通过以下几种方式实现这一目标:

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

  • 接下来,如果跨浏览器兼容性不是问题,您可以在HTML 5中使用WebSocket API。查看this guy's example如何构建HTML 5 WebSocket启用聊天。

  • 最后,您将继续进行AJAX轮询,无论是通常的方法还是长轮询,您可以阻止服务器端脚本执行,直到您有一些数据可用。有关详细信息,请参阅this link

答案 2 :(得分:0)

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