为什么无法对MPMoviePlayerController进行截屏?

3

我需要捕获mpmovieplayer控制器中播放的视频的屏幕截图,但是我得到的只是一个红色屏幕(我使用红色背景和0.5 alpha创建了coverView)。

这是代码:

NSArray *windows = [[UIApplication sharedApplication] windows];
if ([windows count] > 1)
{
    UIWindow *moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];


    UIView *coverView = [[UIView alloc] initWithFrame:moviePlayerWindow.bounds];
    [mainController.moviePlayer pause];  //Without that it won't work either!
    coverView.backgroundColor = [UIColor redColor];
    coverView.alpha = 0.5;
    [moviePlayerWindow addSubview:coverView];

    UIGraphicsBeginImageContext(coverView.bounds.size);
    [coverView.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage *screenShot;

    screenShot = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    UIImageWriteToSavedPhotosAlbum(screenShot, self, nil, nil);
}

有什么想法吗?
谢谢。
3个回答

2

针对这个问题的跟进:

最近我有一个项目需要再次使用此线程中提出的功能,很高兴地说,苹果已经提供了解决方案。我发布这篇文章是为了让访问此线程的人们能够得到答案。

MPMoviePlayerController现在有一个方法,可以返回您想要捕获的时刻的UIImage。

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

只需输入您想要捕获的播放时间,然后就可以得到UIImage。


看着您的代码,我建议您寻找另一种获取图像的方法,而不是从mpmovieplayer本身获取。原因是您正在使用私有框架代码,其次,从视频中获取截屏非常容易崩溃。

不要从视频中获取截图,而是在之前标记视频怎么样?这些代码很容易被苹果应用拒绝。


显然,我只是为了实验添加了暂停方法。有关使用iPhone SDK“标记视频”的示例吗?谢谢。 - Alex1987
刚刚添加了这个问题的答案。 ;) - wahkiz

2

我认为这与OpenGL无关。 - Alex1987

0

谢谢。但是你仍然可以通过同时按下Home和电源按钮来捕捉视频截图,所以可能还有其他方法。 - Alex1987

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接