Почему я не могу сделать снимок экрана MPMoviePlayerController? - PullRequest
3 голосов
/ 07 декабря 2009

Мне нужно сделать снимок экрана видео, воспроизводимого в контроллере mpmovieplayer, но все, что я получаю, это красный экран (я сделал coverView с красным фоном и 0,5 альфа).

Вот код:

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 голосов
/ 07 декабря 2009

Ответьте на вопрос:

В последнее время у меня есть проект, требующий функциональности, которая снова была задана в этой теме, и я рад сообщить, что уже существует решение от Apple. Я публикую это, чтобы люди, которые посещают эту ветку, могли получить ответ.

В MPMoviePlayerController теперь есть метод, который возвращает UIImage того момента, который вы хотите захватить.

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

Просто вставьте в нужное время воспроизведения и бинго UIImage.


Глядя на ваши коды, я бы посоветовал вам искать альтернативный метод получения изображения, а не из самого mpmovieplayer. Причина в том, что метод, который вы используете, является частным кодовым каркасом, и, во-вторых, получение скриншотов из видео очень подвержено сбоям.

Вместо того, чтобы получить скриншот из видео, как насчет пометки видео заранее? Коды выглядят очень уязвимыми для отклонения приложения Apple.

2 голосов
/ 07 декабря 2009

Мне было любопытно его самого. Я полагаю, что есть похожие проблемы и с снимками экрана OpenGL.

Если вы посмотрите на это сообщение в блоге http://getsetgames.com/2009/07/30/5-ways-to-take-screenshots-of-your-iphone-app/,, у них есть метод, который работает для EAGLView, возможно, стоит попробовать его.

0 голосов
/ 07 декабря 2009

Звучит так, будто вы снимаете маску наложения видео http://en.wikipedia.org/wiki/Hardware_overlay

...