跨多个客户端同步播放YouTube视频

时间:2012-12-10 01:53:46

标签: javascript api node.js youtube

Hello Stack Overflow社区,

我是一个相当新手的编码员,但我有一个我一直在设计的项目,每天看起来越来越复杂,我不知道从哪里开始。

灵感取自Synchtube& Phonoblaster,我希望为我的网站创建一些内容,让访问者可以实时,同步地观看我策划的YouTube视频和播放列表。

因为我希望能够将它放在我自己网站的上下文中,所以我不能使用上面列出的已经这样做的服务 - 所以我想弄清楚如何自己动手。

在Stack Overflow和其他博客上已经写过关于这个主题的一些内容: HEREHERE

因为我仍然认为自己是一名新手程序员,而且我在Google和Stack上发现的很多信息往往超过1或2年,我仍然不确定从哪里开始或者如果这些信息是过时。具体来说,我应该学习哪些语言和工具。

从目前为止我收集到的内容,Javascript,Node.JS和YouTube API等内容将构成它的关键。我以前没有使用过任何这些,但有兴趣看看其他有经验的编码员是否会有自己的建议或想法,他们可以指出我。

感谢您抽出时间阅读这篇文章! 希望很快能听到你们中的一些人的意见:)

非常感谢。

1 个答案:

答案 0 :(得分:5)

部分听起来你需要来自Youtube的直播。你可以在这里找到更多信息。 https://support.google.com/youtube/bin/answer.py?hl=en&answer=2474026

如果你能做到这一点,那么在任意数量的用户之间同步游戏就像在浏览器中嵌入常规的youtube嵌入你一样简单。

回过头来看,如果你想在任意数量的用户之间同步视频播放,第一个大问题是学习如何在视频上设置时间。幸运的是,使用hashbang很容易#t =秒。

例如:http://www.youtube.com/watch?v=m38RdUGqBPM&feature=g-high-rec#t=619s将在619秒开始播放视频中的HuskyStarcraft视频。

下一步是让一些后端服务器跟踪当前时间。带有Socket.io的Node.js 难以置信易于设置。 Socket.io是一个很棒的库,可以通过长轮询等方式优雅地处理来自Web套接字的并发连接,即使在非常老的浏览器上也能正常工作。请注意,甚至不需要websockets,但它将是最现代和最全面的方法。否则它的黑客和东西。

这可行的一种方法如下。

User1访问您的网站并开始播放视频。页面上的脚本向服务器发送XHR请求,其中显示“视频在时间X开始”。然后将X存储为开始时间。

此时,你可以去2条路线。您可以使用Youtube API创建一个客户端脚本来轮询视频并每秒获取其当前状态。如果状态或时间发生更改,请将另一个请求发送回服务器以更新状态。

另一个简单的路线是为User2 +加载页面,然后发送XHR请求,询问视频播放时间。服务器发回User1的开始时间之间的差异,然后客户端脚本在youtube播放器上为User2 +设置't'hashbang。这可让您同步开始时间,但如果有任何用户暂停或回放视频,则这些状态不会更新。后续页面刷新可能会这样做。

整个应用程序的复杂性取决于您想要具备的要求。如果它只是同步的开始时间,那么路线#2应该足够好。不需要套接字,并且很容易使用jQuery或直接javascript。

如果您需要真正同步的体验,任何用户都可以开始/停止/暂停/快进/快退视频,那么您正在寻找使用已建立的库解决方案或编写自己的解决方案。

对不起,这个答案有点开放,但你的问题也是如此。 =)