2014-10-04 189 views
2

我试图将音频文件从服务器流到iOS设备,并播放它们完全同步。例如,在我的手机上,我可能会在20秒内进入歌曲,然后我旁边的朋友也应该在20秒内进入歌曲。我知道这不是一个容易解决的问题,但我正在尝试这样做。跨设备建立同步音乐流

我现在可以通过计算设备之间的时间差异来让它们在一秒之内彼此同步,但是这样做不够好,因为人耳可以检测到秒钟的主要差异,这是通过WIFI。

我的下一个方法是从服务器单播一个文件,然后让所有设备直接从服务器上取得它,然后实现一些类似于netflix的缓冲系统,这样网络连接将是限制因素。我会用http://www.wowza.com/来帮忙。

我知道这可以做到,因为http://lysn.in/是与他们的应用程序,并且我希望能够做类似的事情。

任何其他建议后,我尝试我的单播选项?

实施Firebase是否有助于解决很多繁重的问题?

+0

您是使用AVPlayer还是低级解决方案? – kabarga 2014-10-12 20:31:24

+0

AVPlayer就是我正在使用的。 – 2014-10-13 14:38:40

+0

在您当前的解决方案。当你用seekToTime同步时间?当创建播放器或AVPlayerStatusReadyToPlay事件后?秒在int或双? – kabarga 2014-10-13 15:00:36

回答

3

(1)在回答你的问题之一(最后一个):

火力地堡不是“实时”的“这个意义上说” - PubNub可能(几乎可以肯定)最快的“实时”消息适用于应用程序/浏览器/等。

但是,它们并不意味着即时的意义上的实时性,比如说赛车游戏工程师在您的使用案例中的意思。

因此,firebase与您无关,无法提供帮助。 (2)关于你的第二个一般问题:“鉴于我们有通信延迟,如何在两个或更多设备上同步时间。”

现在,这是一个非常好的计算机科学问题。

这里将毫无意义地概述它,因为如果点击“时间同步如何”,在这里完全解释为http://www.ntp.org/ntpfaq/NTP-s-algo.htm

所以实际上,要在两台机器上获得良好的时间基准,请使用那个!使用现有(几十年来完善的)NTP同步技术,两台机器都能够真正准确地设置NTP时间。

(因此,例如https://stackoverflow.com/a/6744978/294884

其实你在干什么呢?

这样做可能会解决您的所有问题;然后只是同意在确切的时间开始。

希望它有帮助!

0

我建议不要使用数据移动来同步播放。这应该很容易处理缓冲区和在缓冲区大小的1/2处发送的周期性“同步”信号。最糟糕的情况是,这应该会在相对于同步信号提前或落后的设备上产生一个小点。