为啥我的 MPMoviePlayerController 不能播放?

Posted

技术标签:

【中文标题】为啥我的 MPMoviePlayerController 不能播放?【英文标题】:Why won't my MPMoviePlayerController play?为什么我的 MPMoviePlayerController 不能播放? 【发布时间】:2013-02-24 23:50:59 【问题描述】:

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

假设的前提条件:您的项目正在使用 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

【讨论】:

很好的答案!谢谢!我现在可以加载视频,但是当它播放时,它只播放音频。我不确定问题是什么,所以任何帮助将不胜感激。谢谢! OK...我解决了问题...视频的编解码器错误。 我讨厌当一个问题得到回答但创作者只是离开而不给分或任何东西

以上是关于为啥我的 MPMoviePlayerController 不能播放?的主要内容,如果未能解决你的问题,请参考以下文章

MPMoviePlayerController 和 UIWebView

MPMoviePlayerController 不播放本地视频

在 IOS 中获取出色的视频消息线程

为啥我的 Chrome Profiler 没有为我的对象显示正确的保留路径,为啥我的对象从未被释放?

为啥我的程序需要两行输入,为啥我的 GPA 计算错误 c#?

为啥我的 PHP 会话会死掉?为啥我不能恢复它们?