我正在使用 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/