Получение первого кадра захваченного видео в iOS 5.0+

Раньше мое приложение могло получать первый видеокадр, используя приведенный ниже код - работает для iOS 4.0+. Но как только мое устройство обновляется до iOS 5.0.1, возвращаемое изображение всегда равно NULL.

+(UIImage *)fFirstVideoFrame:(NSString *)path
{
    MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] 
             initWithContentURL:[NSURL URLWithString:path]];
    UIImage *img = [mp thumbnailImageAtTime:0.0 
             timeOption:MPMovieTimeOptionNearestKeyFrame];
    [mp stop];
    [mp release];
    return img;
}

Кто-нибудь знает, как получить видеокадры в iOS 5.0+? Благодарю.

1 ответ

Решение

Вот почему (из MPMoviePlayerController документация):

Поведение в iOS 4.3 и ранее

В iOS 4.3 и более ранних версиях новый проигрыватель фильмов был автоматически подготовлен для воспроизведения. Начиная с iOS 5.0, чтобы упростить управление воспроизведением, новый проигрыватель фильмов автоматически не готов к воспроизведению. Смотрите обсуждение для initWithContentURL: метод экземпляра.

Обсуждение говорит, частично:

.. Чтобы подготовить новый проигрыватель фильмов для воспроизведения, позвоните в prepareToPlay метод..

Чтобы получать уведомления о готовности нового проигрывателя фильмов, зарегистрируйтесь на MPMoviePlayerLoadStateDidChangeNotification уведомление. Затем вы можете проверить состояние нагрузки, открыв loadState имущество.

Как только фильм будет готов к воспроизведению, вы можете запросить у него миниатюрные изображения.

Другие вопросы по тегам