【问题标题】:Reconciling CACurrentMediaTime() and deviceCurrentTime协调 CACurrentMediaTime() 和 deviceCurrentTime
【发布时间】:2012-06-25 23:33:31
【问题描述】:

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

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

【问题讨论】:

    标签: ios ios5 core-animation avaudioplayer nstimeinterval


    【解决方案1】:

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

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

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

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

    如果多个音频播放器连接到音频输出设备, 设备时间继续增加,只要至少其中之一 播放器正在播放或暂停。

    如果音频输出设备没有连接的音频播放器 无论是播放还是暂停,设备时间都会恢复为 0。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这与正在为 iOS 5 开发的项目有关,因此我将无法使用这些功能。 (我现在正在观看视频以供将来参考。)
      猜你喜欢
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 2023-04-08
      相关资源
      最近更新 更多