无法播放视频文件

时间:2010-11-25 12:26:47

标签: iphone video movie

我可能错过了一些非常明显的东西。

我已加入<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是正确的,因为前一行中使用的变量将视频从资源文件夹移动到文档目录。

为什么它可能不起作用的任何想法?

由于

2 个答案:

答案 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];

这对我来说很好。