我试着实现GameKit在几个设备上通过蓝牙/wifi同步播放歌曲。尽管如此,我总是有0.1-0.5秒的延迟。我认为这样的同步是微不足道的。我找到了BM接收器节拍器,它实现了我想要的,声音真的是同步播放。
我正在使用GKSendDataReliable,有节奏地发送一个小数据包。使用本教程here完成了所有的工作。
我已经用谷歌搜索了很多次,但是找不到答案和/或我的瓶颈。如果有任何建议/方法,我将不胜感激。也许是一些教程?
发布于 2012-10-25 21:59:55
你使用了多少种设备?我假设它是服务器-客户端方案。这是我会做的(它可能不起作用,但你正在寻求建议/方法),非常粗略的算法:
-server设置一个计时器,并使用PING包将其值发送到客户端,并记住每个客户端
-client收到PING报文,并发送应答报文
-server获取响应数据包,检查时间并将结果增量存储在某个地方(以向量形式)
-server发送更多的PING数据包并获得更多的时间增量
-when服务器有足够的数据,它计算平均ping时间(CLIENTX_TIME)并选择最大的一个(BIGGEST_TIME)
-server向所有客户端发送启动数据包,数据包中有一些附加信息,上面写着在XX_TIME中开始播放
BIGGEST_TIME之后,-server开始播放音乐
-clients获取开始包并在XX时间之后开始播放音乐,其中XX是按播放器计算的(因此,对于最慢的客户端,它将是0,对于其他客户端,它将是BIGGEST_ time -CLIENTX_TIME)
-this过程一遍又一遍地继续,每次你想玩什么东西的时候,你都要提前完成
问题是,你永远不可能让所有的东西都同步--不幸的是,这是网络的本质;)
https://stackoverflow.com/questions/12975539
复制相似问题