我正在尝试使用AVAssetWriter
输出从相机捕获的视频。
我正在关注一些不使用AVAssetWriterInputPixelBufferAdaptor
(Record video with AVAssetWriter)的示例,以及一些不使用AVCaptureSession only got video buffer)的示例。
基于Apple参考文献,我将AVAssetWriterInputPixelBufferAdaptor
(或CVPixelBuffer, CVPixelBufferPool
)的目的解释为一种缓冲内存中传入像素的有效方法。实际上,使用AVAssetWriter
编写视频输出时使用它有多重要?我似乎能够在不使用适配器的情况下使基本版本正常工作,但我想更多地了解使用AVAssetWriterInputPixelBufferAdaptor
的好处/意图。
答案 0 :(得分:0)
多年来,我一直在使用没有PixelBufferAdaptor的视频录制,没有任何问题。我基本上使用以下代码:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection{
if (videoWriterInput.readyForMoreMediaData) {
[videoWriterInput appendSampleBuffer:sampleBuffer];
}
}
我的观点是,由于CMSampleBufferRef包含时序信息,因此可以直接写入。而如果您具有CVPixelBuffer,则必须通过适配器添加时序信息。因此,如果您在写入之前进行了一些图像处理,则最终将得到一个CVPixelBuffer并必须使用适配器。如果您的处理需要时间,则适配器可能还会为CVPixelBuffer添加一些缓冲功能。