我有一个视频,我正在使用MPMoviePlayerViewController播放,我希望每1秒捕获一次屏幕截图,因为我想对捕获的图像上的个体执行某些操作.
我使用以下代码捕获截图----
CGRect contectRect = CGRectMake(0, 0, 1024,768);
UIGraphicsBeginImageContext(CGSizeMake(1024,768));
[_player.moviePlayer.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
NSLog(@"view size %f %f",viewImage.size.width,viewImage.size.height);
UIGraphicsGetImageFromCurrentImageContext();
CGImageRef imageRef1 = CGImageCreateWithImageInRect([viewImage CGImage], contectRect);
UIImage *image = [UIImage imageWithCGImage:imageRef1 scale:1.0orientation:viewImage.imageOrientation];
Run Code Online (Sandbox Code Playgroud)
但在这方面我总是得到一个黑色的图像.
我知道还有另一种从视频获取图像的方式,即跟随但我不想使用这些图像,因为这些图像不符合我的要求.
AVAsset *asset = [AVAsset assetWithURL:[NSURL URLWithString:path]];
AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset];
CMTime time = CMTimeMake(1, 1);
UIImage *thumbnail = [UIImage imageWithCGImage:[imageGenerator copyCGImageAtTime:time actualTime:NULL error:NULL]];
[UIImagePNGRepresentation(thumbnail) writeToFile:imgName atomically:YES];
Run Code Online (Sandbox Code Playgroud)