代码之家  ›  专栏  ›  技术社区  ›  sehugg

音频队列:记录的缓冲区的时间戳

  •  0
  • sehugg  · 技术社区  · 16 年前

    AudioInputCallback 用于录制队列的函数。不幸的是,我看到的时间戳不是预期的。下面是一个示例(使用 AudioTimeStamp.mHostTime ):

    2010-01-21 14:03:35.252 [61694:207] 1288747268011206    1288747396166138    -128154932
    2010-01-21 14:03:35.344 [61694:207] 1288747360891024    1288747396166138    -35275114
    2010-01-21 14:03:35.437 [61694:207] 1288747453770843    1288747396166138    57604705
    2010-01-21 14:03:35.530 [61694:207] 1288747546652078    1288747396166138    150485940
    

    第一个时间戳是缓冲时间,第二个是参考时间(我使用的是按下按钮的时间) AudioQueueDeviceGetCurrentTime )第三是两者之间的三角洲。正如预期的那样,缓冲区稍微滞后于“实时”并在运行了几个缓冲区回调后赶上。

    2010-01-21 14:03:46.769 [61694:207] 1288755719477798    1288758853485434    -3134007636
    2010-01-21 14:03:46.862 [61694:207] 1288755812365464    1288758853485434    -3041119970
    2010-01-21 14:03:46.955 [61694:207] 1288755905305200    1288758853485434    -2948180234
    

    正如您所看到的,时间戳(我想是ns?)在第二次时有很大不同。他们在几秒钟内都赶不上实时。这种行为根本不可复制——时间戳有时是对的,有时是错的。然而,当我第一次打开队列时,他们总是错的。

    1 回复  |  直到 16 年前
        1
  •  1
  •   sehugg    16 年前