如何在委托方法中从 CMSampleBufferRef 获取当前录制的视频持续时间
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection;
请用示例代码指导
如何在委托方法中从 CMSampleBufferRef 获取当前录制的视频持续时间
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection;
请用示例代码指导
您需要的详细信息在视频元数据中。要获取视频元数据,您可能需要将其转换CMSampleBuffer
为CVPixelBuffer
.
CMSampleBuffer
是 Core Foundation 风格的不透明类型;一个实例包含一帧视频数据的样本缓冲区。
CVPixelBuffer
是来自采样缓冲区的核心视频像素。
您可以使用以下方法从样本缓冲区中获取像素缓冲区CMSampleBufferGetImageBuffer:
CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(<#A CMSampleBuffer#>);
获得像素缓冲区后,您可以获得视频元数据,如时间和格式信息。
要获取时间信息,请分别使用CMSampleBufferGetPresentationTimeStamp
和CMSampleBufferGetDecodeTimeStamp
。
欲了解更多信息,请阅读媒体表示