如何采取从视频通过MPMediaPlayerController在iPhone上播放的截屏?(How

2019-06-24 10:28发布

任何人可以帮助我在这? 我想从一个视频通过MPMediaPlayerController打得到一个屏幕截图。 什么到目前为止,我已经试过是: -

-(void)viewDidLoad
{
NSURL *tempFilePathURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"LMFao" ofType:@"mp4"]];
player = [[MPMoviePlayerController alloc] initWithContentURL:tempFilePathURL];
[player setControlStyle:MPMovieControlStyleFullscreen];
//Place it in subview, else it won’t work
player.view.frame = CGRectMake(0, 0, 320, 400);
[self.view addSubview:player.view];
}

-(IBAction)screenshot
{
CGRect rect = [player.view bounds];
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[player.view.layer renderInContext:context];   
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

imgView = [[UIImageView alloc] initWithFrame:CGRectMake(150, 150, 100, 100)];
[imgView setImage:image];
imgView.layer.borderWidth = 2.0;
[self.view addSubview:imgView];
}

而我现在已经有这样的: -

现在的情况是我的球员的按钮越来越捕捉屏幕截图,但使用这种背景下方法来捕获我的形象,因为我有我的视频叠加自己的视频图像没有getting.I'm,使用缩略图的方法我不能捕获视频与叠加,但我想视频的图像与叠加。

编辑:我要的是让这两个视频截图和绘图叠加,如图此图像中

但是,即时得到是一个方法我只拿到了视频在我的截图该方法缩略图法,我就在那做的缩略这是由的MPMoviePlayerController并通过第二种方法即时得到仅覆盖不是在马截图视频给不叠加,即方法方面method.i'm越来越rect.Now的方面,我认为这个解决方案可能是文结合这两种images.So帮我给予的建议是合并的图像将我还是不行???

请help.Thanks :)

Answer 1:

U可以合并来自这两个影像way.Please有从下面的代码的样子..

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
    MaskView=[[UIView alloc] init];
    UIImageView *image1=[[UIImageView alloc]init];
    UIImageView *image2=[[UIImageView alloc]init];
    MaskView.frame=CGRectMake(0, 0,500,500);    
    image1.frame=CGRectMake(0,0,160, 160);  
    image2.frame=CGRectMake(60,54,40,40);
    image1.image=image;
    image2.image=maskImage;
    [MaskView addSubview:image1];
    [MaskView addSubview:image2];   

    UIGraphicsBeginImageContext(CGSizeMake(160,160));

    [MaskView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *finishedPic = UIGraphicsGetImageFromCurrentImageContext(); 

    return finishedPic;
}


Answer 2:

你只需要调用一个方法,你mpmovieplayer对象:

- (UIImage *)thumbnailImageAtTime:(NSTimeInterval)playbackTime timeOption:(MPMovieTimeOption)option

此方法将返回一个UIImage对象。 你所要做的仅仅是:

UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];

更多细节看的MPMoviePlayerController

希望这可以帮助

编辑:在你的方法,你可以先再隐藏显示控件后的玩家的控制,比拍摄图像。 你可以实现这一目标用controlStyle的MPMoviePlayerController的财产。

不知道这是你在找什么,但它是我的理解。 如果您正在寻找不同的让我知道。



Answer 3:

这可能有助于

  - (UIImage *)thumbnailImageAtTime:(NSTimeInterval)playbackTime timeOption:(MPMovieTimeOption)option

获取thumbnailImage在给定的时间和规模上的形象。



文章来源: How to take a screenshot from an video playing through MPMediaPlayerController in iPhone?