AVSampleBufferDisplayLayer

AVSampleBufferDisplayLayer

我在AVsampleBufferDisplayLayer上显示了一些视频,并希望捕获该图像并将其保存到相册中。由于AVSampleBufferDisplayLayer继承自CALayer,因此我认为在renderInContext中使用它是可以接受的。

[targetView.layer addSublayer:avLayer];


UIGraphicsBeginImageContext(targetView.bounds.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[avLayer renderInContext:context];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(image,
                                   self,
                                   @selector(image:didFinishSavingWithError:contextInfo:),
                                   NULL);

但这导致空白的白色图像被保存到相册中。
对我可能会出错的地方有任何想法吗?

最佳答案

对于如何采用当前的方法,我没有任何建议,但是正确的方法是根本不使用AVSampleBufferDisplayLayer,而是使用VideoToolbox的VTDecompressionSession对H.264帧进行解码并将其作为CVPixelBuffers返回给您在回调中,然后可以将其转换并保存到磁盘。

关于ios - AVSampleBufferDisplayLayer的快照,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26162479/

10-10 20:29