我想在视频播放器上制作模糊效果。 因此,我使用AVPlayer播放视频,每当我想将视频分享到社交,分享视频播放器上的窗口显示。只是我想应用模糊效果来分享窗口的背景。
renderContext函数不呈现AVPlayer的图层。但我看到Apple的新API drawViewHierarchyInRect将渲染特定的图层,如视频播放器或OpenGL图层。
所以我使用了drawViewHierarchyInRect,它在模拟器上也能正常工作,但在设备上却没有。
有什么想法吗?
- (UIImage *)snapshotOfVideoPlayer
{
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 1.0);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:NO];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
答案 0 :(得分:0)
我相信唯一的方法是使用AVAssetImageGenerator。 假设您有对AVPlayerItem的引用:
AVURLAsset *asset = (AVURLAsset *)self.playerItem.asset;
AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
CGImageRef thumb = [imageGenerator copyCGImageAtTime:self.playerItem.currentTime
actualTime:NULL
error:NULL];
self.videoScreenshotIV.image = [UIImage imageWithCGImage:thumb];