Ios 查找时获取AudioQueueRef的当前时间戳

Ios 查找时获取AudioQueueRef的当前时间戳,ios,objective-c,audio-streaming,audioqueue,Ios,Objective C,Audio Streaming,Audioqueue,我正在处理视频/音频流,并使用AudioQueueRef播放音频。我使用AudioQueueRef的当前时间来实时同步视频/音频帧。当我搜索到指定的时间时,我得到的AudioQueueRef的当前时间没有返回正确的值,它只是在计时之前连续返回值。我想问题是我没有重置AudioQueueRef的所有旧对象。但我尝试了许多方法,并没有得到预期的当前时间值。有人知道这个案子吗?提前感谢 方法获取AudioQueueRef的当前时间 - (double)currentTime { double

我正在处理视频/音频流,并使用
AudioQueueRef
播放音频。我使用
AudioQueueRef
的当前时间来实时同步视频/音频帧。当我搜索到指定的时间时,我得到的
AudioQueueRef
的当前时间没有返回正确的值,它只是在计时之前连续返回值。我想问题是我没有重置
AudioQueueRef
的所有旧对象。但我尝试了许多方法,并没有得到预期的当前时间值。有人知道这个案子吗?提前感谢

方法获取AudioQueueRef的当前时间

- (double)currentTime {
    double timeInterval = 0;
    AudioTimeStamp timeStamp;

    AudioQueueGetCurrentTime(_AudioQueues, NULL, &timeStamp, NULL);
    timeInterval = 1000 * timeStamp.mSampleTime / self.inFormat.mSampleRate; // convert to miliseconds
    return timeInterval;
}
以及我在查找时尝试重置值的方法。如果我使用下面的任何方法,当前时间将返回负值

AudioQueueFreeBuffer(_AudioQueues, _AudioBuffer);
AudioQueueFlush(_AudioQueues);
AudioQueueReset(_AudioQueues);

p/S:查找之前所有的事情都是正确的,查找之后,时间戳是返回连续值。

可能会帮助您。谢谢您,但我的问题是查找之后,我得到的AudioTimeStamp的值无效(它似乎是连续时间戳,而不是我查找的时间戳)。时间戳值示例:查找之前:
10,11,12
在搜索到5之后:
13,14,15…
现在我临时存储了在搜索之前到搜索之后和
currentTime=currentTime-timeGap之间的时间间隔。但它不是获取当前时间的典型方法。我只想使用
AudioQueueGetCurrentTime
获得准确的当前时间。我相信音频队列在查找后不能保留时间戳,它只保留播放的持续时间。假设您正在播放一个音频文件,播放12秒后搜索到5秒,10秒后,当您使用
AudioQueueGetCurrentTime
调用get current time时,您将得到22。所以你可以得到22-12+5=17的实时电流。音频缓冲区可能会影响精确搜索,因此您最好在搜索前使用
AudioQueueStop(queue,true)
停止音频队列。。。我认为,使用您寻求的时间偏移量加上您从
AudioQueueGetCurrentTime
获得的当前时间,它提供了足够的精确时间。