Воспроизведение MOV не работает с использованием UIImagePickerController с MPMoviePlayerController - PullRequest
3 голосов
/ 30 сентября 2011

Я прочитал похожие темы о воспроизведении фильмов в MPMoviePlayerController после выбора видео с помощью UIImagePickerController, включая:

MPMoviePlayerController не воспроизводит фильм, выбранный из UIImagePickerController

  • Освобождение средства выбора и / или фильма-проигрывателя при завершении воспроизведения или их комбинации не решает мою проблему.

Ошибка воспроизведения файла MOV в MPMoviePlayerController

  • Мой фильм записывается через iPhone в режиме реального времени и не будет иметь проблем с кодеками - это стандартное MOV

Мой код ниже - и поверьте мне, я попробовал каждую перестановку, которую я могу понять с помощью этого кода. Я также попытался использовать MPMoviePlayerViewController, представляя его модально с помощью дополнений UIViewController MediaPlayer - presentMoviePlayerViewControllerAnimated

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [self.navigationController dismissModalViewControllerAnimated:YES];

    if ( currentMediaType == kMediaTypeVideo ) {
        MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[info objectForKey:@"UIImagePickerControllerMediaURL"]];
        moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
        [moviePlayer.view setFrame:current_player_view.bounds];
        [current_player_view addSubview:moviePlayer.view];
    }

}

Я также попытался настроить способ предоставления пути к фильму для MPMoviePlayerController - я узнаю, что могу получить доступ к пути следующим образом:

[[info objectForKey:@"UIImagePickerControllerMediaURL"] path];

... и, следовательно, может вместо этого предоставить NSURL этот код:

NSString *chosenMoviePath = [[info objectForKey:@"UIImagePickerControllerMediaURL"] path];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:chosenMoviePath]];

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

Заранее спасибо!

* 1 033 * J

1 Ответ

4 голосов
/ 24 октября 2011

Чтобы решить - я наконец-то обнаружил, что если я не анимирую dismissModalViewController для UIImagePickerController, то для видео отображается воспроизведение. Лучшее, что я могу сделать, - это то, что анимационное увольнение имеет задержку, которая может привести к тому, что другой код не будет выполнен немедленно. Итак, ниже работает:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [self.navigationController dismissModalViewControllerAnimated:NO];

    if ( currentMediaType == kMediaTypeVideo ) {
        MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[info objectForKey:@"UIImagePickerControllerMediaURL"]];
        moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
        [moviePlayer.view setFrame:current_player_view.bounds];
        [current_player_view addSubview:moviePlayer.view];
    }
}
...