Конвертировать слой UIView в UIImage

Воспроизведение видео с помощью AVPlayerLayer в виде. Мне нужно преобразовать вид в изображение, я пытался

[myview.layer renderInContext:context];

но это дает только черное изображение. Я хочу преобразовать этот вид в изображение с видео в то время. Это преобразование будет происходить одновременно через 0,05 с.

Я пытался с AVAssetImageGenerator. Что дает мне правильное изображение, используя актив. Но это заняло немного больше времени, что создает проблемы с производительностью моего приложения. Может ли кто-нибудь помочь мне, как сократить процесс преобразования видео в изображение для конкретного CMTime.

Ниже моя кодировка.

- (UIImage *)currentItemScreenShot
{
    AVPlayer *abovePlayer = [objVC player];
    if(imageGenerator == nil)
    {
        AVAsset *asset = [[[objVC player] currentItem] asset];
        imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
    }

    CMTime time = [[abovePlayer currentItem] currentTime];
    if ([imageGenerator respondsToSelector:@selector(setRequestedTimeToleranceBefore:)] && [imageGenerator respondsToSelector:@selector(setRequestedTimeToleranceAfter:)]) {
        [imageGenerator setRequestedTimeToleranceBefore:kCMTimeZero];
        [imageGenerator setRequestedTimeToleranceAfter:kCMTimeZero];
    }

    CGImageRef imgRef = [imageGenerator copyCGImageAtTime:time
                                               actualTime:NULL
                                                    error:NULL];
    if (imgRef == nil) {
        if ([imageGenerator respondsToSelector:@selector(setRequestedTimeToleranceBefore:)] && [imageGenerator respondsToSelector:@selector(setRequestedTimeToleranceAfter:)]) {
            [imageGenerator setRequestedTimeToleranceBefore:kCMTimePositiveInfinity];
            [imageGenerator setRequestedTimeToleranceAfter:kCMTimePositiveInfinity];
        }
        imgRef = [imageGenerator copyCGImageAtTime:time actualTime:NULL error:NULL];
    }
    UIImage *image = [UIImage imageWithCGImage:imgRef];
    CGImageRelease(imgRef);

    image = [self reverseImageByScalingToSize:image.size :image];
    return image;
}

Ответы на вопрос(7)

Ваш ответ на вопрос