Mpmovieplayercontroller в iPad - нет видео только аудио - PullRequest
1 голос
/ 29 октября 2010

Я занимаюсь разработкой приложения для iPad, в котором я играю видео, хранящиеся в самом приложении.Я представляю список видео в виде таблицы.Когда я выбираю строку, воспроизводится видео, соответствующее этой строке.Но при выполнении этого иногда экран становится черным, видео не видно, а воспроизводится только звук.

Я знаю, что воспроизведение видео в полноэкранном режиме или использование MPMoviePlayerViewController устраняет эту проблему.Но мое требование состоит в том, чтобы я не хотел воспроизводить фильм в полноэкранном режиме изначально.Пожалуйста, объясните мне, как этого можно достичь.

-(void)playMovie {
   MPMoviePlayerController *movieController = [[MPMoviePlayerController alloc]     initWithContentURL:movieUrl];
   self.moviePalyer = movieController;
   [movieController release];

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePalyerDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object: self.moviePalyer];

 self.moviePalyer.view.frame = CGRectMake(240, 0, 561, 313);
 self.moviePalyer.view.backgroundColor = [UIColor clearColor];
 [self.moviePalyer prepareToPlay];
 [self.view addSubview: self.moviePalyer.view];
 [self.moviePalyer play];

}
-(void)moviePalyerDidFinish:(NSNotification*)notification
{
 [moviePalyer.view removeFromSuperview];
 [moviePalyer stop];
 moviePalyer.initialPlaybackTime = -1.0;

 [[NSNotificationCenter defaultCenter] removeObserver:self
             name:MPMoviePlayerPlaybackDidFinishNotification
              object:moviePalyer];
 [moviePalyer release];
 moviePalyer = nil;
}

ПРИМЕЧАНИЕ: это на симуляторе ipad

1 Ответ

1 голос
/ 30 октября 2010

Я решил проблему.Ранее я создавал MPMoviePlayerController для каждого из выбранных рядов и высвобождал его в методе уведомления moviedidfinish. Но теперь вместо создания movieplayercontroller для каждого выделенного ряда я повторно использую уже созданный объект MPMoviePlayerControler.

Ниже приведен фрагмент кода:

-(void)playMovie
{
   if(self.moviePalyer == nil)
   {

    MPMoviePlayerController *movieController = [[MPMoviePlayerController alloc] initWithContentURL:url];
    self.moviePalyer = movieController;
    [movieController release];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePalyerDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePalyer];

    self.moviePalyer.repeatMode = MPMovieRepeatModeOne;
    self.moviePalyer.view.frame = CGRectMake(240, 0, 561, 313);
    self.moviePalyer.view.backgroundColor = [UIColor clearColor];
}
else 
{
    [self.moviePalyer setContentURL:url];
    [self stopMovie];
}
[self.view addSubview: self.moviePalyer.view];
[self.moviePalyer play];
   }
   -(void)stopMovie
   {
     [self.moviePalyer.view removeFromSuperview];
[self.moviePalyer stop];
self.moviePalyer.initialPlaybackTime = -1.0;
   }

Я освобождаю объект moviePlayer в методе dealloc.

Надеюсь, это поможет тем, у кого возникла та же проблема.

...