Я сейчас создаю приложение для видео-коллажа. У меня есть один вид, который содержит Avplayerlayer в качестве подслоя. Мне нужно сделать снимок экрана с видом, который содержит AvplayerLayer. Когда я попытался сделать это, он получает снимок экрана, но для avplayerlayer (внутри которого воспроизводится видео) нет скриншота, просто черный экран. Для симулятора отлично работает и показывает слой также, но для реального устройства просто черный экран.
Я перепробовал все решения в документации StackOverFlow и appleds, но ничего не получалось.
Некоторые решениячто я пробовал:
swift: Как сделать снимок экрана AVPlayerLayer ()
Скриншот для AVPlayer и видео
https://developer.apple.com/documentation/avfoundation/avcapturevideopreviewlayer
Как вы можете видеть из моего кода, он должен работать для получения изображений из вида, но avplayerlayer не работает.
- (UIImage *)imageFromView:(UIView *)view
{
UIGraphicsBeginImageContext(view.frame.size);
[view drawViewHierarchyInRect:_videoFrame afterScreenUpdates:false];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
NSString *fileExtension = @"png";
NSData *data;
Boolean *isOutputJPS = false;
if (isOutputJPS) {
data = UIImageJPEGRepresentation(image, 0.5);
fileExtension = @"jpg";
}else{
data = UIImagePNGRepresentation(image);
}
UIImage *rasterizedView = [UIImage imageWithData:data];
UIGraphicsEndImageContext();
return rasterizedView;
}
//in the viewController
UIImage *image = [self imageFromView:recordingView];
Я немного отчаялся, потому что естьнет никакого решения для Avplayerlayer. Когда я проверяю изображения, сгенерированные в реальном устройстве. Он просто показывает мне вид, но для симулятора он работает так, как я ожидаю.