我在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/