小编Shi*_*kla的帖子

捕获正在运行的视频的屏幕截图

我有一个视频,我正在使用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)

iphone objective-c mpmovieplayercontroller ios

6
推荐指数
1
解决办法
424
查看次数