如何从委托方法
中的CMSampleBufferRef获取当前录制的视频时长- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection;
请参考示例代码
答案 0 :(得分:0)
您需要的详细信息位于视频元数据中。要获取视频元数据,您可能需要将CMSampleBuffer
转换为CVPixelBuffer
。
CMSampleBuffer
是Core Foundation风格的不透明类型;实例包含视频数据帧的样本缓冲区。
CVPixelBuffer
是样本缓冲区中的核心视频像素。
您可以使用下面的CMSampleBufferGetImageBuffer:
CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(<#A CMSampleBuffer#>);
获得像素缓冲区后,您可以获得视频元数据,如时序和格式信息。
要获取时间信息,请分别使用CMSampleBufferGetPresentationTimeStamp
和CMSampleBufferGetDecodeTimeStamp
。
有关详细信息,请参阅Representations of Media