我必须在给定的时间点执行动作(在多个设备上一次播放歌曲而没有延迟).我的要求是应用程序不应使用任何互联网连接.所以我需要一个确切的时间来播放数据(音频)]
我已经尝试过以下内容:
首先,您需要同步2个设备的内部时间.显然,你在iOS上可以拥有的最准确的时钟是绝对时间:
CFAbsoluteTime now = CFAbsoluteTimeGetCurrent();
Run Code Online (Sandbox Code Playgroud)
然后,您需要将此时间从设备发送A到设备,B检索设备上的差异B并将其发送回A,然后将差异与网络事务中花费的时间进行比较.通过这种方式,您可以非常精确地同步2个设备的时间.(这假设网络时间在请求和响应之间是对称的,并且您在设备上的计算没有太多开销B).

从那里你可以轻松地AVAudioPlayer在设置歌曲和呼叫的设备上实例化2 prepareToPlay,最后根据同步的延迟激活播放方法.这应该给你一个不明显的精度.
您可以采取的另一种方法是在AudioUnit连接到麦克风的第二个设备上放置一个路径,以便根据第一个设备发出的声音同步音乐.
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |