无法播放iPhone的本地视频

时间:2012-08-07 14:40:55

标签: objective-c ios video mpmovieplayercontroller

我在iPhone上播放视频时遇到问题。我在应用程序包中有一个文件,我试图在MPMoviePlayerController中播放,但它只是显示黑屏。这是以下代码:

-(UIView*)createVideoPlayerOfWidth:(CGFloat)width
{
    // The width for one of these can be half of the max width
    //CGFloat widthAndHeight = width / 2.0f;

    // TODO: Create a video player
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"myVideo" ofType:@"mov"]];
    MPMoviePlayerController *playerController = [[MPMoviePlayerController alloc] initWithContentURL:url];
    [playerController prepareToPlay];
    [playerController setShouldAutoplay:NO];
    [playerController setScalingMode:MPMovieScalingModeAspectFit];
    [playerController setControlStyle:MPMovieControlStyleEmbedded];
    [playerController setRepeatMode:MPMovieRepeatModeNone];

    // Resize the thumbnail of the video
    [[playerController view] setFrame:CGRectMake(0, 0, width, width)];

    return [playerController view];
}

它返回一个有效的URL(如果找不到该文件,pathForResource将返回nil)。我只是将一个subView(由函数返回的视图)添加到滚动视图中,将它显示在屏幕上。我一直在努力解决这个问题,现在已经无处可去了。非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:2)

确保您保留对MPMoviePlayerController实例的引用:

  • 如果这是一个ARC项目,那么当playerController返回时createVideoPlayerOfWidth将被销毁,您的视频可能无法播放。您应该将播放器存储在strong实例变量或属性中。

    您可以在视图控制器文件的顶部添加类似的内容:

    @interface MyViewController ()
    @property (nonatomic,retain) MPMoviePlayerController *player;
    @end
    

    在创建MPMoviewPlayerController实例后插入此内容:

    self.player = playerController;
    
  • 如果你没有使用ARC,这可能不是问题,但你仍然应该在实例变量中保留一个引用,以便以后可以释放它。