为什么我的MPMoviePlayerController无法播放?

5
我正在尝试使用以下代码播放基本的.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

它显示一个空白的黑屏吗? - DD_
1个回答

13
假设前提条件:您的项目正在使用ARC
您的MPMoviePlayerController实例仅为本地变量,而ARC无法知道您需要保留该实例。由于控制器未被其视图保留,结果是在执行playMovie方法后直接释放您的MPMoviePlayerController实例。
要解决此问题,只需在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

非常好的答案!谢谢!我现在已经成功加载了视频,但是当它播放时,只有音频。我不确定问题出在哪里,所以任何帮助都将不胜感激。谢谢! - INsanEWay
好的...问题解决了...视频的编解码只是错了。 - INsanEWay
2
我讨厌当一个问题得到回答,但是创建者只是离开了,没有给分数或任何东西。 - Heavy_Bullets

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接