Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 音频队列:记录的缓冲区的时间戳_Iphone_Core Audio_Audioqueueservices - Fatal编程技术网

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

Iphone 音频队列:记录的缓冲区的时间戳,iphone,core-audio,audioqueueservices,Iphone,Core Audio,Audioqueueservices,我正在尝试从录音队列的AudioInputCallback函数中记录的缓冲区中获取时间。不幸的是,我看到的时间戳不是预期的。下面是一个示例(使用AudioTimeStamp.mHostTime): 第一个时间戳是缓冲时间,第二个是参考时间(按下按钮的时间,我使用的是AudioQueueDeviceGetCurrentTime),第三个是两者之间的增量。正如预期的那样,缓冲区稍微滞后于“实时”并在运行了几个缓冲区回调后赶上 现在,当关闭和重新打开此队列时,情况大不相同: 2010-01-21 14

我正在尝试从录音队列的
AudioInputCallback
函数中记录的缓冲区中获取时间。不幸的是,我看到的时间戳不是预期的。下面是一个示例(使用
AudioTimeStamp.mHostTime
):

第一个时间戳是缓冲时间,第二个是参考时间(按下按钮的时间,我使用的是
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?)在第二次时有很大不同。他们在几秒钟内都赶不上实时。这种行为根本不可复制——时间戳有时是对的,有时是错的。但是,在我第一次打开队列时,他们总是错的。

因此,再一次休息一下,然后继续发布,这样就解决了问题;)队列停止/暂停时,不应获取队列的当前时间戳:^P

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