2009-12-07 55 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

相關問題