12

除了缩略图方法之外,还有其他方法可以截取视频吗?如果是,那么请告诉我,如果不是,请告诉我如何调整具有相同分辨率的缩略图图像的大小?我在截取视频时遇到问题。我用过这个:-

如何从 iPhone 中通过 MPMediaPlayerController 播放的视频中截取屏幕截图?

在此之后,我使用了我得到这个的图像的合并分辨率问题

这里的图像质量是我的大问题。

我要这个

所需输出

我只想要上面屏幕截图中显示的视频和绘图,结果相同。请帮忙谢谢:)

4

3 回答 3

6

除了缩略图方法之外,还有一种方法可以获取视频的屏幕截图。!!!

方法是这样的:-

- (UIImage *)imageFromVideoURL 
{
// result 
UIImage *image = nil;

// AVAssetImageGenerator
AVAsset *asset = [[AVURLAsset alloc] initWithURL:appDelegate.videoURL options:nil];; 
AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
imageGenerator.appliesPreferredTrackTransform = YES;

// calc midpoint time of video
Float64 durationSeconds = CMTimeGetSeconds([asset duration]);
CMTime midpoint = CMTimeMakeWithSeconds(durationSeconds/2.0, 600); 

// get the image from 
NSError *error = nil; 
CMTime actualTime;
CGImageRef halfWayImage = [imageGenerator copyCGImageAtTime:midpoint actualTime:&actualTime error:&error];

if (halfWayImage != NULL) 
{
    // cgimage to uiimage
    image = [[UIImage alloc] initWithCGImage:halfWayImage];
    [dic setValue:image forKey:kImage];
    NSLog(@"Values of dictonary==>%@", dic);
    NSLog(@"Videos Are:%@",appDelegate.videoURLArray);
    CGImageRelease(halfWayImage);
}
return image;
}

但是我的问题仍然是我在视频上绘图时我无法通过绘图叠加获得视频的屏幕截图,因此我必须使用图像合并。

谢谢 :)

于 2012-05-25T06:45:07.220 回答
2

试试下面的代码。

    moviePlayer = [[MPMoviePlayerController alloc] init];
    containerView =[[UIView alloc]initWithFrame:CGRectMake(40,130, 240,219)];
    [moviePlayer setContentURL:[NSURL fileURLWithPath:moviePath]];
    [[moviePlayer view] setFrame:CGRectMake(0, 0, containerView.frame.size.width, containerView.frame.size.height)];  // frame must match parent view
    [self.view addSubview:containerView];
    [containerView addSubview: [moviePlayer view]];
    [moviePlayer setFullscreen:YES animated:YES];
于 2012-05-16T07:32:06.250 回答
2

这将在您想要的时间点为您提供视频播放器的屏幕截图。这是一个标准的方法,通过时间选项来获取玩家的缩略图。

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
UIImage *thumbnail = [player thumbnailImageAtTime:60.0 timeOption:MPMovieTimeOptionNearestKeyFrame];


UIImageView *imagV=[[UIImageView alloc]initWithImage:thumbnail];
[imagV setFrame:CGRectMake(self.view.center.x, self.view.center.y, 200.0, 200.0)];
于 2012-06-01T06:39:14.920 回答