2009-12-07 56 views
3

我需要捕获在mpmovieplayer控制器中播放的视频的屏幕截图,但我得到的只是一个红色屏幕(我用红色背景和0.5 alpha制作了coverView)。为什么我无法捕获MPMoviePlayerController的屏幕截图?

下面是代码:

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); 
} 

任何想法?

感谢

回答

2

跟进的问题:

最近我有一个要求,是在这个线程再次问功能的项目,我很高兴地说已经有提供解决这个苹果。我正在发布此信息,以便访问此主题的人可以获得答案。

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

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

只要把你想捕捉的playbackTime,和宾果游戏,UIImage的。


看你的代码,我想提醒你应该找得到的图像,而不是从mpmovieplayer本身的替代方法。原因在于您使用的方法是私人框架代码,其次,从视频获取屏幕截图非常容易导致崩溃。

而不是从视频截图,如何预先标记视频?这些代码看起来非常容易被苹果拒绝。

+0

很显然,我添加了pause方法只是实验。任何使用iphone sdk“标记视频”的例子?谢谢。 – Alex1987 2009-12-07 18:23:13

+0

刚刚添加了这个问题的答案。 ;) – wahkiz 2011-06-22 06:28:07

相关问题