Попытка воспроизвести видео с помощью MPMoviePlayerController, получить только аудио

#objective-c #cocoa-touch #ios #mpmovieplayercontroller

#objective-c #cocoa-touch #iOS #mpmovieplayercontroller

Вопрос:

Я хочу воспроизвести видео в своем приложении для iPhone. Я использовал этот код:

 - (void)viewDidLoad
{
    [super viewDidLoad];
    NSURL *movieUrl = [NSURL fileURLWithPath:
                       [[NSBundle mainBundle] pathForResource:@"Myvideo" 
                                                       ofType:@"mp4"]];

    //create a new instance of MPMoviePlayerController
    MPMoviePlayerController* myMovie=[[MPMoviePlayerController alloc] 
                                      initWithContentURL:movieUrl];

    //disable scaling of our movie
    myMovie.scalingMode = MPMovieScalingModeNone;

    //don't show any controls
   // myMovie.movieControlMode = MPMovieControlModeHidden;

    //you can specify at which time the movie should 
    //start playing (default is 0.0)
    myMovie.initialPlaybackTime = 2.0;

    //register a callback method which will be called
    //after the movie finished
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(movieFinished:) 
                                                 name:MPMoviePlayerPlaybackDidFinishNotification 
                                               object:myMovie]; 

    //start the movie (asynchronous method)
    [myMovie play];
    // Do any additional setup after loading the view from its nib.
}
  

С этим кодом работает только звук. Кто-нибудь может мне помочь, пожалуйста?

Ответ №1:

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

Таким образом, вы можете добавить:

 [myMoview.view setFrame: self.view.bounds];  // player's frame must match parent's
[self.view addSubview:myMovie.view];
  

Комментарии:

1. Спасибо, но я не понимаю, что такое MyView?

2. Я привел это в виде фрагмента. это представление вашего ViewController. Я обновлю свой ответ.

3. @Josh Могу ли я добавить элементы управления? воспроизведение, остановка … ?

Ответ №2:

Технические вопросы и ответы Apple 1240:

MPMoviePlayerController воспроизводит аудио из фильма, но не видео

Вопрос: Я могу успешно воспроизводить фильмы с помощью MPMoviePlayerController iOS 3.1.3. Когда я запускаю этот же код на iPad и на iPhone с iOS 4, я слышу звук фильма, но видео больше не отображается. Что происходит?

A: Начиная с iPhone iOS 3.2, вызов -play: метода по-прежнему запускает воспроизведение фильма, но это не гарантирует, что фильм виден. Чтобы отобразить фильм, вы должны получить новое свойство view из вашего MPMoviePlayerController объекта и добавить это представление в свою иерархию представлений. Вот фрагмент кода:

Листинг 1 Как добавить свойство просмотра MPMoviePlayerController в вашу иерархию просмотра для воспроизведения фильма.

 #import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
[[player view] setFrame:[myView bounds]]; // size to fit parent view exactly
[myView addSubview:[player view]];
[player play];
  

Смотрите Важный совет по переносу для использования платформы Media Player и ссылку на класс MPMoviePlayerController для получения дополнительной информации.