MPMoviePlayerController重复模式在viewDidLoad中不起作用

时间:2012-05-07 21:58:23

标签: iphone xcode mpmovieplayercontroller repeat viewdidload

似乎我遇到了repeatmodeone的问题:它不重复视频。

这是我在实施中的视频代码:

- (void)viewDidLoad{

    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Space Particle" ofType:@"mp4"]];


    MPMoviePlayerViewController *playerController = [[MPMoviePlayerViewController alloc]initWithContentURL:url];
    [self presentMoviePlayerViewControllerAnimated:playerController];
    [playerController.moviePlayer prepareToPlay];
    playerController.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
    playerController.moviePlayer.controlStyle = MPMovieControlStyleNone;
    playerController.moviePlayer.scalingMode = MPMovieScalingModeAspectFill;
    playerController.moviePlayer.repeatMode = MPMovieRepeatModeOne;
    [MyView1 addSubview: playerController.view];


    [playerController.moviePlayer play];
    [playerController release];playerController=nil;
}

它可以作为动画背景,上面有按钮。视频播放但完成后不会重复播放。

我发现,作为一个IbAction,它会重复,但作为一个viewDidLoad它不会。

请注意,“MyView”插座已链接到自定义UIButton,并且位于电影播放的按钮视图中。

我正在使用的视频尺寸不大。

我的目标是电影必须重复使用viewdidload方法才能自动播放和重复。

拜托,我有什么问题吗?关于如何解决的建议?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:6)

尝试以下代码。这很完美。

    NSURL *fileUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Video" ofType:@"mp4"]];
    MPMoviePlayerViewController *moviePlayerController = [[MPMoviePlayerViewController alloc]initWithContentURL:fileUrl];
    [moviePlayerController.moviePlayer prepareToPlay];
    [moviePlayerController.moviePlayer setRepeatMode:MPMovieRepeatModeOne];
    [moviePlayerController.moviePlayer setControlStyle:MPMovieControlStyleEmbedded];
    [self.view addSubview:moviePlayerController.view];

答案 1 :(得分:2)

在viewDidLoad函数完成后,它已被ARC删除。您应该将MPMoviePlayerController实例保存为类成员。 NSNotification也解决了这个问题,因为它保留了对象。使其成为实例变量将使通知解决方案变得多余。

答案 2 :(得分:0)

同样的问题。我用下面的步骤解决了这个问题: 1)订阅结束播放通知

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(moviePlayBackDidFinished:) 
                                                 name:MPMoviePlayerPlaybackDidFinishNotification 
                                               object:self.moviePlayer];

2)在moviePlayBackDidFinished方法中手动开始播放