【问题标题】:MPMoviePlayerController doesn't load my videoMPMoviePlayerController 不加载我的视频
【发布时间】:2013-07-03 10:17:03
【问题描述】:

我正在尝试使用 MPMoviePlayerController 显示视频,但无法使其正常工作。 我的视频在我的服务器上。所以我试图以这种方式显示它:

-(void) playMovieAtURL: (NSURL*) theURL {
    moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:theURL];
    moviePlayer.view.frame = self.view.bounds;
    moviePlayer.controlStyle = MPMovieControlModeDefault;
    moviePlayer.movieSourceType = MPMovieSourceTypeFile;
    moviePlayer.fullscreen = YES;

    [self.view addSubview:moviePlayer.view];
    [moviePlayer prepareToPlay];
    [moviePlayer play];
}

moviePlayer 是我的 viewController 的一个属性。 给出的 URL 是正确的(在 safari 中测试)。 我的视频是 .mov 视频。

当我的函数被调用时,我只是有一个黑屏。 控件没有出现,我认为视频没有加载是因为在应用的状态栏中,没有显示网络活动指示器。

欢迎任何帮助。

编辑

我刚刚注意到尝试从设备的 Safari 应用程序访问视频会导致:

编辑 2

我的视频是 480 × 850,而 MPMoviePlayerController 只支持最大 640 x 480 的视频。 所以不能用这个框架玩。 我是否必须调整我的视频大小,或者是否有其他框架可以用来显示它? 我只需要一个非常简单的播放器...

【问题讨论】:

    标签: ios video mpmovieplayercontroller


    【解决方案1】:

    //你可以这样做

     -(void)playMovie:(id)sender
     {
       NSURL *url = [NSURL URLWithString:
      @"http://www.xxxx.com/movie.mov"];
    
    _moviePlayer =  [[MPMoviePlayerController alloc]
                 initWithContentURL:url];
    
    [[NSNotificationCenter defaultCenter] addObserver:self
                   selector:@selector(moviePlayBackDidFinish:)
                   name:MPMoviePlayerPlaybackDidFinishNotification
                   object:_moviePlayer];
    
    _moviePlayer.controlStyle = MPMovieControlStyleDefault;
    _moviePlayer.shouldAutoplay = YES;
    [self.view addSubview:_moviePlayer.view];
    [_moviePlayer setFullscreen:YES animated:YES];
    

    }

    // 目标动作通知方法

    - (void) moviePlayBackDidFinish:(NSNotification*)notification {
       MPMoviePlayerController *player = [notification object];
    [[NSNotificationCenter defaultCenter]
      removeObserver:self
      name:MPMoviePlayerPlaybackDidFinishNotification
      object:player];
    
    if ([player
        respondsToSelector:@selector(setFullscreen:animated:)])
    {
        [player.view removeFromSuperview];
    }
    }
    

    【讨论】:

    • 感谢您的回答。它类似于lakesh的。你能看看评论吗?
    • 哦,好吧,我没有检查他的答案......“我的视频从未播放过但我正在无限加载......这里无限加载意味着......你能解释清楚
    • 我的意思是:MPMoviePlayerController 视图已显示,控制器也已显示(预览、播放、下一个),但在顶部工具栏中,靠近“完成”按钮,写为 @“正在加载...”带有活动指示器。但是视频永远不会显示(也可能永远不会加载)。
    • 可能是网络连接问题...如果你的网络很慢,加载也需要时间。
    • hmm...不确定,即使在模拟器上也无法正常工作(而从 safari 加载只需大约 10 秒)
    【解决方案2】:

    这样做:

    -(void)playMovieAtURL:: (NSURL*) url
    {
    
        moviePlayer =  [[MPMoviePlayerController alloc]
                     initWithContentURL:url];
    
        [[NSNotificationCenter defaultCenter] addObserver:self
                       selector:@selector(moviePlayBackDidFinish:)
                       name:MPMoviePlayerPlaybackDidFinishNotification
                       object:moviePlayer];
    
        moviePlayer.controlStyle = MPMovieControlStyleDefault;
        moviePlayer.shouldAutoplay = YES;
        [self.view addSubview:moviePlayer.view];
        [moviePlayer setFullscreen:YES animated:YES];
        [moviePlayer play];
        [self.view bringSubviewToFront:moviePlayer.view];
    }
    
    
    - (void) moviePlayBackDidFinish:(NSNotification*)notification {
        MPMoviePlayerController *player = [notification object];
        [[NSNotificationCenter defaultCenter] 
          removeObserver:self
          name:MPMoviePlayerPlaybackDidFinishNotification
          object:player];
    
        if ([player
            respondsToSelector:@selector(setFullscreen:animated:)])
        {
            [player.view removeFromSuperview];
        }
    }
    

    【讨论】:

    • 感谢您的回答。现在,显示控件。但是我正在无限加载...我的视频从未播放过,状态栏中仍然没有任何活动指示器
    • 添加播放功能和bringSubViewToFront。
    • 我在 playMovieAtURL 中添加了这个,但它没有任何改变。显示 MPMoviePlayerController 视图和控制器(预览、播放、下一个),但在顶部工具栏中,靠近“完成”按钮,使用活动指示器写入 @“正在加载...”。我错过了一个框架?委托协议?顺便说一下,在 MPMoviePlayerController 的视图显示后立即调用 moviePlayBackDidFinish: 是否正常?
    • 请看一下我的编辑,我刚刚尝试从设备的 Safari 应用程序访问视频。
    猜你喜欢
    • 2012-11-29
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多