2

我正在尝试将几个CABasicAnimationsAVAudioPlayer. 我遇到的问题是在CABasicAnimation使用CACurrentMediaTime()时调度动画时用作参考AVAudioPlayerdeviceCurrentTime。也用于动画,CFTimeInterval而用于声音NSTimeInterval(不确定它们是否像其他 CF 和 NS 类型一样“免费桥接”)。我发现参考点也不同。

有没有办法确保声音和动画使用相同的参考点?

4

2 回答 2

1

我不知道“官方”答案,但它们都是双精度浮点数,从某个参考时间开始测量秒数。

从文档中,听起来 deviceCurrentTime 链接到当前音频会话:

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

@property(readonly) NSTimeInterval deviceCurrentTime 讨论该属性的值在音频播放器播放或暂停时单调增加。

如果不止一个音频播放器连接到音频输出设备,只要至少有一个播放器正在播放或暂停,设备时间就会继续增加。

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

您应该能够启动音频输出会话,调用 CACurrentMediaTime() 然后在 2 个连续语句中获取音频会话的 deviceCurrentTime,然后计算偏移常量以在它们之间进行转换。该偏移量将在几纳秒内准确。偏移量仅在音频输出会话处于活动状态时才有效。每次从音频会话中删除所有音频播放器时,您都必须重新计算它。

于 2012-06-26T00:52:08.673 回答
1

我认为官方答案刚刚改变,尽管目前处于保密协议之下。

请参阅“相机捕捉中的新增功能”,尤其是关于 CMSync* 功能的最后几张幻灯片。 https://developer.apple.com/videos/wwdc/2012/?id=520

于 2012-06-26T01:14:20.963 回答