3

你好 Stack Overflow 社区,

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

受到 Synchtube 和 Phonoblaster 的启发,我希望为我的网站创建一些东西,让访问者可以实时同步地观看我策划的 YouTube 视频和播放列表。

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

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

因为我仍然认为自己是一个新手程序员,而且我在 Google 和 Stack 上找到的许多信息往往都超过 1 或 2 年,所以我仍然不确定从哪里开始,或者这些信息是否已经过时。具体来说,我应该学习哪些语言和工具。

从我目前收集到的信息来看,Javascript、Node.JS 和 YouTube API 之类的东西将构成它的症结所在。我以前没有使用过任何这些,但有兴趣看看其他有经验的编码人员是否会有他们自己的建议或想法,他们可以指出我的方向。

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

非常感谢。

4

1 回答 1

7

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

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

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

例如: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。

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

抱歉,这个答案有点开放式,但你的问题也是如此。=)

于 2012-12-10T02:54:56.923 回答