Konwertuj warstwę UIView na UIImage

Gram w wideo za pomocą AVPlayerLayer w widoku. Próbowałem przekonwertować widok na obraz

[myview.layer renderInContext:context];

ale to daje tylko czarny obraz. Chcę przekonwertować ten widok na obraz z wideo w tym czasie. Ta konwersja nastąpi jednocześnie 0,05 s.

Próbowałem z AVAssetImageGenerator. Co daje mi właściwy obraz przy użyciu Zasobów. Ale to zajmuje trochę więcej czasu, co powoduje pewne problemy z wydajnością w mojej aplikacji. Czy ktoś może mi pomóc w zmniejszeniu procesu konwersji wideo na obraz dla konkretnego CMTime.

Poniżej moje kodowanie.

- (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;
}

questionAnswers(7)

yourAnswerToTheQuestion