2010-11-25 102 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版本上不起作用。但我不認爲這是這種情況下的問題。