我想几个同步CABasicAnimations
与AVAudioPlayer
。 我的问题是, CABasicAnimation
使用CACurrentMediaTime()
为参考点调度动画时同时AVAudioPlayer
使用deviceCurrentTime
。 另外对于动画, CFTimeInterval
被使用,而声音方面NSTimeInterval
(不知道他们是“免费电话桥接”像其他CF和NS类型)。 我发现参考点是不同的。
有没有一种方法,以确保声音和动画使用相同的参考点?
我不知道“官方”的答案,但它们是衡量一个秒数从一定的参考时间都双精度浮点数。
从文档,这听起来像deviceCurrentTime链接到当前音频片段:
的时间值,以秒,音频输出设备。 (只读)
@属性(只读)NSTimeInterval deviceCurrentTime讨论的这个属性值的增加而单调的音频播放器正在播放或暂停。
如果有一个以上的音频播放器连接到音频输出设备,设备的时间一直持续递增的球员至少一个正在播放或暂停。
如果音频输出设备没有连接的音频播放器或者是正在播放或暂停,设备的时间恢复为0。
你应该能够在2个连续的语句来启动音频输出会话,调用CACurrentMediaTime(),然后让你的deviceCurrentTime音频会话,然后计算偏移常数它们之间的转换。 这抵消将是几纳秒内准确。 偏移而音频输出会话活动只会是有效的。 你必须每次从音频会议中删除所有音频播放器,以重新计算。
我认为,官方的回答只是改变了,虽然目前NDA下。
请参见“新增摄像头捕捉”,特别是有关CMSYNC *函数的最后几张幻灯片。 https://developer.apple.com/videos/wwdc/2012/?id=520