내가 나를 위해 일을 만나의 솔루션을 얻을 수 있지만 올바른 방향으로 생각하고 저를 얻었다 .
다음은 프로젝트에서 사용 된 코드입니다. screenshotFromPlayer:maximumSize:
메서드는 스크린 샷을 찍는 AVPlayer
의 인스턴스와 반환 된 이미지의 최대 크기가 될 CGSize
의 인스턴스를 허용합니다.
- (UIImage *)screenshotFromPlayer:(AVPlayer *)player maximumSize:(CGSize)maxSize {
CMTime actualTime;
NSError *error;
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:player.currentItem.asset];
// Setting a maximum size is not necessary for this code to
// successfully get a screenshot, but it was useful for my project.
generator.maximumSize = maxSize;
CGImageRef cgIm = [generator copyCGImageAtTime:player.currentTime
actualTime:&actualTime
error:&error];
UIImage *image = [UIImage imageWithCGImage:cgIm];
CFRelease(cgIm);
if (nil != error) {
NSLog(@"Error making screenshot: %@", [error localizedDescription]);
NSLog(@"Actual screenshot time: %f Requested screenshot time: %f", CMTimeGetSeconds(actualTime),
CMTimeGetSeconds(self.recordPlayer.currentTime));
return nil;
}
return image;
}
참고 또한 하나의 비동기 영상 생성을 수행하는 (AVAssetImageGenerator
의 인스턴스)에있어서 generateCGImagesAsynchronouslyForTimes:completionHandler:
대신 copyCGImageAtTime:actualTime:error:
을 사용할 수있다.
이 코드 샘플은 의 currentTime
에 스크린 샷을 생성하지만 언제든지 대신 사용할 수 있습니다.
이미지를 만드는 방법을 호출하는 코드를 볼 수 있습니까? –