我有这个代码试图在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];
}
答案 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];
它对我来说似乎很好。两个注意事项:
movieSourceType
部分,电影开始前会显示黑屏约一秒