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是正确的,因为该变量在前几行中用于将视频从资源文件夹移动到文档目录。

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

谢谢

4

2 回答 2

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 中,因此此代码不适用于早期的 iO​​S 版本。但我认为这不是本案的问题。

于 2010-11-25T12:38:38.377 回答
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];

这对我来说很好。

于 2010-11-25T12:39:49.243 回答