avfoundation - 如何记录使用 AVCaptureSession 捕获的第一帧和最后一帧的确切时间?

标签 avfoundation avcapturesession avcapture avcapturemoviefileoutput

我正在使用 AVCaptureSession 将视频捕捉到电影文件中。我想获得电影第一帧和最后一帧的确切时间戳。我该怎么做?

AVCaptureFileOutputRecordingDelegate 中,方法 captureOutput(_:didStartRecordingToOutputFileAtURL:fromConnections:) 在电影录制开始时被调用,但它对我的目的来说太不准确了,因为是录制结束时的回调。我需要帧的确切时间戳。

AVCaptureVideoDataOutputSampleBufferDelegate 中,方法 captureOutput:didOutputSampleBuffer:fromConnection: 每帧调用一次,可用于访问帧的显式时间戳信息,因此应该是非常准确。

不幸的是,您似乎无法将捕获 session 配置为同时录制到视频文件并提供原始样本数据,因此我无法在捕获到文件的同时使用它来获取帧时间戳。

或者有什么方法可以同时使用它们吗?还是我错过了另一个我可以使用的 API?

最佳答案

FWIW,我就此问题向 Apple 提出了开发人员技术支持请求,以获得最终答案。

Apple 工程师确认无法同时访问这两个 API。因此,如果您想要精确的时间戳并录制视频文件,则需要符合 AVCaptureVideoDataOutputSampleBufferDelegate 并自行构建文件。

关于avfoundation - 如何记录使用 AVCaptureSession 捕获的第一帧和最后一帧的确切时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34027076/

相关文章:

ios - 尝试拍照时传递了不活动/无效的连接

iphone - 如何以编程方式进行音频降噪?

ios - AVCaptureSession 能否使用自定义分辨率

ios - AVCaptureSession 处于事件状态时的 AudioServicesPlaySystemSound

ios - 从 Xcode 在设备上构建与从 TestFlight 下载 - 问题

ios - 通过提取框架在avcapture预览层上绘制形状

ios - 如何确定CoreFoundation _CFXNotificationPost崩溃

ios - AVAssetWriter::append() 返回 false,没有额外信息(How to do segmenting of captured input to video-chunks with AVFoundation?)

ios - 如何使用 AVCaptureDevice 保存图像

ios - AVFoundation 我使用 setActiveVideoMinFrameDuration 没有工作