2010-11-25 65 views
0

我可能错过了一些非常明显的东西。无法播放视频文件

我已经包括<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

仔细检查,它是你认为它的地方。是否已完成复制,例如? – 2010-11-25 12:44:22

+0

`[[NSFileManager defaultManager] fileExistsAtPath:(NSString *)path]` – 2010-11-25 12:45:10

回答

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

这个工作正常,我。

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版本上不起作用。但我不认为这是这种情况下的问题。