调和CACurrentMediaTime()和deviceCurrentTime(Reconcili

2019-09-18 12:14发布

我想几个同步CABasicAnimationsAVAudioPlayer 。 我的问题是, CABasicAnimation使用CACurrentMediaTime()为参考点调度动画时同时AVAudioPlayer使用deviceCurrentTime 。 另外对于动画, CFTimeInterval被使用,而声音方面NSTimeInterval (不知道他们是“免费电话桥接”像其他CF和NS类型)。 我发现参考点是不同的。

有没有一种方法,以确保声音和动画使用相同的参考点?

Answer 1:

我不知道“官方”的答案,但它们是衡量一个秒数从一定的参考时间都双精度浮点数。

从文档,这听起来像deviceCurrentTime链接到当前音频片段:

的时间值,以秒,音频输出设备。 (只读)

@属性(只读)NSTimeInterval deviceCurrentTime讨论的这个属性值的增加而单调的音频播放器正在播放或暂停。

如果有一个以上的音频播放器连接到音频输出设备,设备的时间一直持续递增的球员至少一个正在播放或暂停。

如果音频输出设备没有连接的音频播放器或者是正在播放或暂停,设备的时间恢复为0。

你应该能够在2个连续的语句来启动音频输出会话,调用CACurrentMediaTime(),然后让你的deviceCurrentTime音频会话,然后计算偏移常数它们之间的转换。 这抵消将是几纳秒内准确。 偏移而音频输出会话活动只会是有效的。 你必须每次从音频会议中删除所有音频播放器,以重新计算。



Answer 2:

我认为,官方的回答只是改变了,虽然目前NDA下。

请参见“新增摄像头捕捉”,特别是有关CMSYNC *函数的最后几张幻灯片。 https://developer.apple.com/videos/wwdc/2012/?id=520



文章来源: Reconciling CACurrentMediaTime() and deviceCurrentTime