0

似乎我在使用 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 方法重复才能自动播放和重复。

请问,我做错了什么吗?关于如何解决的建议?任何帮助,将不胜感激。

4

3 回答 3

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];
于 2013-09-10T06:42:31.893 回答
2

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

于 2014-03-31T12:58:11.933 回答
0

同样的问题。我通过以下步骤解决了它:1)订阅结束播放通知

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

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

于 2012-05-11T12:44:12.920 回答