gpt4 book ai didi

ios - 从 AVCaptureVideoDataOutput 获取正确的第一帧 - AVFoundation

转载 作者:行者123 更新时间:2023-11-28 17:51:04 30 4
gpt4 key购买 nike

我正在使用 AVFoundation 从后置摄像头捕获视频,并希望在按下开始按钮时处理帧。问题是,在我按下开始按钮的那一刻,我从样本缓冲区中抓取帧并对其进行处理,但我得到的帧似乎是过去的帧,这意味着不是我想要的当前帧。

我知道样本缓冲区会延迟出现。我尝试使用示例缓冲区的演示时间戳,但我似乎无法使其同步。有没有人遇到过类似的问题?任何帮助或建议将不胜感激。

(void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection;

那是我获取相框的地方。

最佳答案

我设法找到解决方案,以防其他人面临同样的问题。

据我了解,苹果不保证在您按下捕获按钮的那一刻您将获得该帧,因为它们在您设置的串行队列缓冲区中排队。你肯定会按顺序得到它,但不是实时的。为了在按下按钮之前忽略过去的帧,我使用 NSDate 来测量开始运行捕获 session 时所用的时间 (startTime) 以及在捕获输出委托(delegate)中处理第一帧的时间 (endTime)

所以,所用时间 = endTime-startTime

有了这个时间,我们可以计算帧延迟,在我的例子中,我以 24FPS 捕获帧延迟为 3 帧,因此当用户按下捕获按钮时,我不会存储/处理前 3 帧以便结果可以与用户捕获的内容同步。

希望有所帮助,并随时提出更好的建议和编辑。

关于ios - 从 AVCaptureVideoDataOutput 获取正确的第一帧 - AVFoundation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36193608/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com