Cocoa touch MPMoviePlayerViewController黑屏问题!
我有这段代码试图在iPhone4模拟器上运行视频 问题是,它看起来像是加载了播放器,但半秒钟后在整个应用程序顶部加载了一个后屏幕,禁用了触摸和所有功能,而且它看起来也不播放视频,因为我听不到任何声音 有什么想法吗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
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