MPMoviePlayerViewController Black Screen issue!

﹥>﹥吖頭↗ 提交于 2019-12-12 23:09:15

问题


I have this code trying to run a video on the iPhone 4 Simulator.

The problem is that looks like it loads the player but half a second later loads a back screen on top of the whole application disabling touch and everything, and it looks like it does not play the video also, because I can't hear anything.

Any ideas?!

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:


I believe the problem is caused by releasing the MPMoviePlayerViewController. Simply retain the controller until you are done with it.

Prior to the "[mp release];" add this line to save the value away.

self.moviePlayerViewController = mp;

Then update your dealloc method to do the release:

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

Add the synthesize to the top of your .m file:

@synthesize moviePlayerViewController = _moviePlayerViewController;

Add the defination to the @interface of your .h file:

MPMovieViewController *_moviePlayerViewController;

Add the property to your .h file:

@property (readwrite, retain) MPMovieViewController *moviePlayerViewController;

You may need some headers in your header:

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

You may also need to balance your "presentMoviePlayer" call with the dismiss somewhere:

[self dismissMoviePlayerViewControllerAnimated];

Phew, code everywhere. Anyway, if you are finished with the resource early, you may be able to release it sooner by using NotificationManager to watch for MPMoviePlayerPlaybackDidFinishNotification. There are many examples of that, so I won't repeat it.

Hope this helps.




回答2:


This is the code I'm using:

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

It seems to work fine for me. Two notes:

  • Some simulators (like the current iOS 5.0) crash when playing a movie, but it works on a real device
  • if you leave out the movieSourceType part, a black screen is shown for about a second before the movie starts


来源:https://stackoverflow.com/questions/3231033/mpmovieplayerviewcontroller-black-screen-issue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!