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

标签 ios iphone objective-c mpmovieplayercontroller

我有一个正在使用 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];

但在这方面我总是得到一个黑色图像。

我知道还有另一种从视频中获取图像的方法,即跟随,但我不想使用这些图像,因为这些图像不符合我的要求。

    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];

最佳答案

您可以尝试捕捉视频的缩略图。并尝试设置它。

关于ios - 捕获正在运行的视频的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19658362/

相关文章:

ios - UIView 中的 safeAreaInsets 在 iPhone X 上为 0

ios - 区域监控(地理围栏)会消耗电池电量 (iOS)

ios - 启用断点后,Xcode 10 运行后自动停止

iphone - IOS - 如何使用部分 View

ios - (iPhone)从另一个不工作的应用程序中启动一个应用程序

ios - Firebase 将数组数据导入 TableView

iphone - 快速枚举期间实际发生了什么?

iphone - 如何生成兼容 Objective-C 语法的 JSON 字符串

objective-c - 使用 WebView 将 HTML 加载到 Cocoa 应用程序中并更改文本

ios - 如何在 Objective C 中编写计算初始化器?