2010-07-12 2 views
1

У меня этот код пытается запустить видео на iPhone 4 Simulator.MPMoviePlayerViewController Black Screen issue!

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

Любые идеи ?!

MPMoviePlayerViewController *mp = 
[[MPMoviePlayerViewController alloc] initWithContentURL:videoUrl]; 

if (mp) { 
    mp.moviePlayer.scalingMode = MPMovieScalingModeFill; 
    mp.moviePlayer.movieSourceType = MPMovieSourceTypeFile; 
    [mp.moviePlayer play]; 

    [self presentMoviePlayerViewControllerAnimated:mp]; 

    [mp release]; 
} 

ответ

1

Я считаю, что проблема вызвана выпуском MPMoviePlayerViewController. Просто удерживайте контроллер, пока не закончите с ним.

До "[mp release];" добавьте эту строку, чтобы сохранить значение.

self.moviePlayerViewController = mp; 

Затем обновите ваш метод dealloc сделать релиз:

- (void)dealloc { 
    [_moviePlayerViewController release], _moviePlayerViewController = nil; 
    [super dealloc]; 
} 

Добавить в синтезируют в верхней части файла .m:

@synthesize moviePlayerViewController = _moviePlayerViewController; 

Добавьте Defination к @interface вашего файла .h:

MPMovieViewController *_moviePlayerViewController; 

Добавить свойство в вашем файле .h:

@property (readwrite, retain) MPMovieViewController *moviePlayerViewController; 

Вам может потребоваться некоторые заголовки в вашем заголовке:

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

Вам также может понадобиться, чтобы сбалансировать свой «presentMoviePlayer» вызов с распускать где:

[self dismissMoviePlayerViewControllerAnimated]; 

Фу, код везде. В любом случае, если вы закончите работу с ресурсом раньше, вы сможете его освободить раньше, используя NotificationManager, чтобы посмотреть MPMoviePlayerPlaybackDidFinishNotification. Это много примеров, поэтому я не буду повторять это.

Надеюсь, это поможет.

+0

Я не верю, что ответ верный, mp сохраняется, когда он показан модально. Это не проблема памяти. – talkol

0

Это код, я использую:

MPMoviePlayerViewController *movieViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:contentUrl]]; 
movieViewController.moviePlayer.movieSourceType = MPMovieSourceTypeFile; 
[self presentMoviePlayerViewControllerAnimated:movieViewController]; 
[movieViewController release]; 

Это, кажется, работает хорошо для меня. Два примечания:

  • Некоторые тренажеры (например, текущий IOS 5.0) аварии при воспроизведении фильма, но он работает на реальном устройстве
  • если оставить в movieSourceType часть, черный экран отображается в течение примерно секунда до начала фильма