为什么我的MPMoviePlayerController不会播放?

时间:2013-02-24 23:51:00

标签: ios mpmovieplayercontroller

我正在尝试使用下面的代码来播放基本的.mov视频文件,但是当按下我指定了按钮的按钮时,唯一显示的是黑框,但没有播放视频。任何帮助表示赞赏。感谢。

@implementation SRViewController

-(IBAction)playMovie{
    NSString *url = [[NSBundle mainBundle]
                     pathForResource:@"OntheTitle" ofType:@"mov"];
    MPMoviePlayerController *player = [[MPMoviePlayerController alloc]
                                       initWithContentURL: [NSURL fileURLWithPath:url]];

    // Play Partial Screen
    player.view.frame = CGRectMake(10, 10, 720, 480);
    [self.view addSubview:player.view];

    // Play Movie
    [player play];
}

@end

1 个答案:

答案 0 :(得分:13)

假设前提条件:您的项目正在使用ARC

您的MPMoviePlayerController实例仅限本地实例,ARC无法告知您需要保留该实例。由于控制器未被其视图保留,因此结果是您的MPMoviePlayerController实例将在执行playMovie方法执行后直接释放。

要解决该问题,只需将播放器实例的属性添加到SRViewController类,然后将该实例分配给该属性。

部首:

@instance SRViewController

   [...]

   @property (nonatomic,strong) MPMoviePlayerController *player;

   [...]

@end

实现:

@implementation SRViewController

   [...]

    -(IBAction)playMovie
    {
        NSString *url = [[NSBundle mainBundle]
                         pathForResource:@"OntheTitle" ofType:@"mov"];
        self.player = [[MPMoviePlayerController alloc]
                                           initWithContentURL: [NSURL fileURLWithPath:url]];

        // Play Partial Screen
        self.player.view.frame = CGRectMake(10, 10, 720, 480);
        [self.view addSubview:self.player.view];

        // Play Movie
        [self.player play];
    }

    [...]

@end