从CMSampleBufferRef获取当前视频时长

时间:2015-08-03 07:22:59

标签: ios avfoundation cmsamplebufferref

如何从委托方法

中的CMSampleBufferRef获取当前录制的视频时长
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection;

请参考示例代码

1 个答案:

答案 0 :(得分:0)

您需要的详细信息位于视频元数据中。要获取视频元数据,您可能需要将CMSampleBuffer转换为CVPixelBuffer

CMSampleBuffer是Core Foundation风格的不透明类型;实例包含视频数据帧的样本缓冲区。 CVPixelBuffer是样本缓冲区中的核心视频像素。

您可以使用下面的CMSampleBufferGetImageBuffer:

从样本缓冲区中获取像素缓冲区

CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(<#A CMSampleBuffer#>);

获得像素缓冲区后,您可以获得视频元数据,如时序和格式信息。

要获取时间信息,请分别使用CMSampleBufferGetPresentationTimeStampCMSampleBufferGetDecodeTimeStamp

有关详细信息,请参阅Representations of Media