AVAssetWriter中AVAssetWriterInputPixelBufferAdaptor的重要性

时间:2018-04-06 06:32:16

标签: ios video avassetwriter

我正在尝试使用AVAssetWriter输出从相机捕获的视频。

我正在关注一些不使用AVAssetWriterInputPixelBufferAdaptorRecord video with AVAssetWriter)的示例,以及一些不使用AVCaptureSession only got video buffer)的示例。

基于Apple参考文献,我将AVAssetWriterInputPixelBufferAdaptor(或CVPixelBuffer, CVPixelBufferPool)的目的解释为一种缓冲内存中传入像素的有效方法。实际上,使用AVAssetWriter编写视频输出时使用它有多重要?我似乎能够在不使用适配器的情况下使基本版本正常工作,但我想更多地了解使用AVAssetWriterInputPixelBufferAdaptor的好处/意图。

1 个答案:

答案 0 :(得分:0)

多年来,我一直在使用没有PixelBufferAdaptor的视频录制,没有任何问题。我基本上使用以下代码:

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer  fromConnection:(AVCaptureConnection *)connection{
     if (videoWriterInput.readyForMoreMediaData) {
         [videoWriterInput appendSampleBuffer:sampleBuffer];
     }
}

我的观点是,由于CMSampleBufferRef包含时序信息,因此可以直接写入。而如果您具有CVPixelBuffer,则必须通过适配器添加时序信息。因此,如果您在写入之前进行了一些图像处理,则最终将得到一个CVPixelBuffer并必须使用适配器。如果您的处理需要时间,则适配器可能还会为CVPixelBuffer添加一些缓冲功能。

相关问题