Cocoa touch MPMoviePlayerViewController黑屏问题!

Cocoa touch MPMoviePlayerViewController黑屏问题!,cocoa-touch,mpmovieplayercontroller,mpmovieplayer,ios,Cocoa Touch,Mpmovieplayercontroller,Mpmovieplayer,Ios,我有这段代码试图在iPhone4模拟器上运行视频 问题是,它看起来像是加载了播放器,但半秒钟后在整个应用程序顶部加载了一个后屏幕,禁用了触摸和所有功能,而且它看起来也不播放视频,因为我听不到任何声音 有什么想法吗 MPMoviePlayerViewController *mp = [[MPMoviePlayerViewController alloc] initWithContentURL:videoUrl]; if (mp) { mp.moviePlayer.scalingMode

我有这段代码试图在iPhone4模拟器上运行视频

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

有什么想法吗

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

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

    [self presentMoviePlayerViewControllerAnimated:mp];

    [mp release];
}

我相信问题是由释放MPMoviePlayerViewController引起的。只需保留控制器,直到使用完毕

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

self.moviePlayerViewController = mp;
然后更新您的dealloc方法以执行发布:

- (void)dealloc {
   [_moviePlayerViewController release], _moviePlayerViewController = nil;
   [super dealloc];
}
将合成添加到.m文件的顶部:

@synthesize moviePlayerViewController = _moviePlayerViewController;
将定义添加到.h文件的@界面:

MPMovieViewController *_moviePlayerViewController;
@property (readwrite, retain) MPMovieViewController *moviePlayerViewController;
将属性添加到.h文件:

MPMovieViewController *_moviePlayerViewController;
@property (readwrite, retain) MPMovieViewController *moviePlayerViewController;
您的标题中可能需要一些标题:

#import <MediaPlayer/MediaPlayer.h>
#import <MediaPlayer/MPMoviePlayerViewController.h>
呸,到处都是代码。无论如何,如果您提前完成了资源的使用,您可以通过使用NotificationManager查看MPMoviePlayerPlaybackDidFinishNotification来更快地释放它。有很多这样的例子,所以我不再重复了


希望这有帮助。

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

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

self.moviePlayerViewController = mp;
然后更新您的dealloc方法以执行发布:

- (void)dealloc {
   [_moviePlayerViewController release], _moviePlayerViewController = nil;
   [super dealloc];
}
将合成添加到.m文件的顶部:

@synthesize moviePlayerViewController = _moviePlayerViewController;
将定义添加到.h文件的@界面:

MPMovieViewController *_moviePlayerViewController;
@property (readwrite, retain) MPMovieViewController *moviePlayerViewController;
将属性添加到.h文件:

MPMovieViewController *_moviePlayerViewController;
@property (readwrite, retain) MPMovieViewController *moviePlayerViewController;
您的标题中可能需要一些标题:

#import <MediaPlayer/MediaPlayer.h>
#import <MediaPlayer/MPMoviePlayerViewController.h>
呸,到处都是代码。无论如何,如果您提前完成了资源的使用,您可以通过使用NotificationManager查看MPMoviePlayerPlaybackDidFinishNotification来更快地释放它。有很多这样的例子,所以我不再重复了


希望这有帮助。

这是我正在使用的代码:

MPMoviePlayerViewController *movieViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:contentUrl]];
movieViewController.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
[self presentMoviePlayerViewControllerAnimated:movieViewController];
[movieViewController release];
这对我来说似乎很管用。注二:

  • 一些模拟器(如当前的iOS 5.0)在播放电影时会崩溃,但它可以在真实设备上工作
  • 如果省略
    movieSourceType
    部分,则在电影开始前会显示约一秒钟的黑屏

    • 这是我正在使用的代码:

      MPMoviePlayerViewController *movieViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:contentUrl]];
      movieViewController.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
      [self presentMoviePlayerViewControllerAnimated:movieViewController];
      [movieViewController release];
      
      这对我来说似乎很管用。注二:

      • 一些模拟器(如当前的iOS 5.0)在播放电影时会崩溃,但它可以在真实设备上工作
      • 如果省略
        movieSourceType
        部分,则在电影开始前会显示约一秒钟的黑屏

      我不相信答案是正确的,mp在模式显示时会保留。这不是内存问题..我不相信答案是正确的,mp在以模式显示时会保留。这不是内存问题。。