我正在尝试将音频文件从服务器流式传输到iOS设备并完全同步播放。例如,在我的手机上,我可能会在一首歌中持续20秒,然后我旁边的朋友也应该在该歌曲的20秒内。我知道这不是一个容易解决的问题,但我试图这样做。
我现在可以通过计算设备之间的时间差来让它们在一秒之内得到它们然后让它们同步,但这还不够好,因为人耳可以检测到一秒内的主要差异已经过WIFI了。
我的下一个方法是从服务器单播一个文件然后让所有设备直接从服务器接收它,然后实现类似于netflix的某种类型的缓冲系统,这样网络连接就会受到限制因子。我将使用http://www.wowza.com/来帮助解决这个问题。
我知道这可以做到,因为http://lysn.in/是用他们的应用做的,我希望能够做类似的事情。
我尝试单播选项后还有其他建议吗?
实施firebase是否有助于解决许多繁重的问题?
答案 0 :(得分:3)
(1)回答你的一个问题(最后一个):
Firebase不是"实时"在"那种感觉" - PubNub可能(几乎可以肯定)是最快的"实时"在apps / browser / etc之间和之间发送消息。
但是,他们并不意味着实时意义上的实时,比如说,竞赛游戏工程师的意思或实际上是在你的用例中。
所以firebase与你无关,并且没有帮助。
(2)关于你的第二个一般性问题:"如果我们有通信延迟,如何在两台或多台设备上同步时间。"
现在,这是计算机科学中一个非常常见的问题。
在这里概述它是毫无意义的,因为如果你点击"如何时间同步"在这里完全解释http://www.ntp.org/ntpfaq/NTP-s-algo.htm?
事实上,为了在两台机器上获得良好的时间基础,你应该使用!使用现有的(几十年完善的)NTP同步,让两台机器真正准确地为NTP设置时间。
(例如https://stackoverflow.com/a/6744978/294884)
事实上,你这样做了吗?
这样做可能会解决你所有的问题;那么就同意在某个确切的时间开始。
希望它有所帮助!
答案 1 :(得分:0)
我建议不要使用数据移动来同步播放。这对于缓冲器和周期性“同步”信号应该是直接的,该信号是以<1的周期发送的。缓冲区大小的1/2。最坏的情况是,这应该在相对于同步信号前进或后退的设备上产生一个小的光点。