MPMoviePlayerViewController黑屏问题!

时间:2010-07-12 18:18:42

标签: cocoa-touch mpmovieplayercontroller mpmovieplayer ios

我有这个代码试图在iPhone 4模拟器上运行视频。

问题是它看起来像加载了播放器,但是半秒后加载整个应用程序顶部的后屏幕,禁用触摸和一切,看起来它也不播放视频,因为我不能听到任何声音。

有什么想法吗?!

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

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

    [self presentMoviePlayerViewControllerAnimated:mp];

    [mp release];
}

2 个答案:

答案 0 :(得分:1)

我认为问题是由释放MPMoviePlayerViewController引起的。只需保留控制器,直到完成它为止。

在“[mp release];”之前添加此行以保存价值。

self.moviePlayerViewController = mp;

然后更新dealloc方法以执行发布:

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

将合成添加到.m文件的顶部:

@synthesize moviePlayerViewController = _moviePlayerViewController;

将定义添加到.h文件的@interface:

MPMovieViewController *_moviePlayerViewController;

将属性添加到.h文件中:

@property (readwrite, retain) MPMovieViewController *moviePlayerViewController;

您的标题中可能需要一些标题:

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

你可能还需要平衡你的“presentMoviePlayer”电话与某处的解雇:

[self dismissMoviePlayerViewControllerAnimated];
p,到处都是代码。无论如何,如果您提前完成了资源,您可以通过使用NotificationManager来监视MPMoviePlayerPlaybackDidFinishNotification,从而尽快发布它。有很多例子,所以我不再重复了。

希望这有帮助。

答案 1 :(得分:0)

这是我正在使用的代码:

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

它对我来说似乎很好。两个注意事项:

  • 某些模拟器(如当前的iOS 5.0)在播放电影时崩溃,但它可以在真实设备上运行
  • 如果您遗漏movieSourceType部分,电影开始前会显示黑屏约一秒