3

我正在考虑使用多个 Android 设备(例如 Nexus 7 平板电脑)来构建照片/视频墙,我想知道 a) 是否有可能和 b) 如何同步所有这些设备的显示。谷歌展示了它的Chrome 赛车实验,如此清晰地展示了在许多设备上同步显示是可能的。

所以这是我的问题:

  • 我应该使用什么技术来同步显示?安卓?铬合金?如果可能,请指出我现有的代码。
  • 在这种设置中可以实现的设备之间的最小延迟是多少?
  • 是否也可以在多个设备上同时启动视频和声音播放(想想视频墙)?
  • 这样的项目应该考虑什么样的架构?发送命令的集中式服务器?设备应该相互通信吗?

我对建议很好奇!

编辑: blinkendroid是迄今为止我发现的唯一可以完成这项工作的应用程序。优点?缺点?备择方案?

4

2 回答 2

8

从技术上讲,屏幕不是共享的,游戏状态是共享的,手机都按照他们理解的方式呈现状态。

只是关于 Chrome Racer 的一些背景知识。我们在这里有一个案例研究 ,但它并没有完全涵盖您提出的问题。

Racer 中用于通信的主要技术是WebSockets。WebSockets 允许一个客户端近乎实时地从服务器推送和接收消息。

Racer 通过给游戏一个唯一的 ID 来启动一个游戏会话,并为用户打开一个 Web Socket。随后加入游戏的任何人都被告知使用相同的 ID,并且服务器也会为他们创建一个 Web 套接字。现在服务器知道所有参与者。

当游戏开始时,会向所有参与者广播一条消息,要求他们准备好开始,在这个阶段,服务器正在计算将消息往返于所有客户端需要多长时间。它这样做是为了计算设备之间的任何延迟,从而尝试补偿较慢客户端的延迟。

现在服务器知道了游戏可以正常启动的客户端。当用户在玩他们的游戏时,他们的命令通过网络套接字被推送到服务器。服务器将此消息中继到所有连接的客户端(就像卫星一样),它对连接到会话的每个用户执行相同的操作。这就是游戏状态的共享方式。

当每个客户端接收到从服务器广播给它的命令时,它会更新其游戏的内部表示并将其呈现到屏幕上。

这就是它。

实际上,我们想使用WebRTC 数据通道,因为它可以减少数据到达客户端所需的跳数。在我们今天的解决方案中,客户端 ping 服务器并且服务器中继消息(2 跳),如果我们可以将其直接发送给其他用户(这是 WebRTC 的目标),我们可以将延迟减少一半。不幸的是,当时 WebRTC 还不够普及,无法将其部署为解决方案。

于 2013-11-29T22:52:02.157 回答
0

Websockets 表示网络。您不需要网络在同一个物理位置同步多个设备......对于视频/音乐同步,通过蓝牙或 WiFi 等本地离线技术的本地应用程序听起来更可靠。

于 2013-11-29T23:10:11.577 回答