我可能错过了一些非常明显的东西。
我已加入<MediaPlayer/MediaPlayer.h>
并拥有此代码:
NSURL *videoURL = [NSURL fileURLWithPath:pathToFile];
MPMoviePlayerViewController *mediaPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
[self presentMoviePlayerViewControllerAnimated:mediaPlayer];
mediaPlayer.view.backgroundColor = [UIColor blackColor];
[mediaPlayer release];
但视频无法播放。我从另一个视频完美运行的地方复制了代码。
pathToFile
是正确的,因为前一行中使用的变量将视频从资源文件夹移动到文档目录。
为什么它可能不起作用的任何想法?
由于
答案 0 :(得分:2)
我不认为presentMoviePlayerViewControllerAnimated
会保留其接收器,所以看起来好像你过早地发布了你的电影播放器。您可以尝试将mediaPlayer设为保留属性:
@interface MyClass : SuperClass {
MVMoviePlayerViewController *mediaPlayer;
}
@property (nonatomic, retain) MVMoviePlayerViewController *mediaPlayer;
@end
@implementation MyClass
@synthesize mediaPlayer;
// rest of class implementation here...
@end
然后初始化:
self.mediaPlayer = [[[MPMoviePlayerViewController alloc]
initWithContentURL:videoURL] autorelease];
随后发布:
self.mediaPlayer = nil;
(要编写视频播放完毕后发生的代码,请查看MPMoviePlayerPlaybackDidFinishNotification
通知。)
另请注意,presentMoviePlayerViewControllerAnimated
首次出现在iOS 3.2中,因此此代码无法在早期的iOS版本上运行。但在这种情况下,我不认为这是问题所在。
答案 1 :(得分:2)
除了presentMoviePlayerViewControllerAnimated
之外,您可以使用以下代码NSString *movieFile=[[NSBundle mainBundle] pathForResource:@"movie" ofType:@"m4v"];
moviePlayer= [[MPMoviePlayerController alloc] initWithContentURL:url];
moviePlayer.view.frame = self.view.frame;
[self.view addSubview:moviePlayer.view];
[moviePlayer setFullscreen:YES animated:YES];
这对我来说很好。