1

ビューのバックグラウンドでループする短いムービーがあります。MPMoviePlayerController を使用してムービーを再生します。repeatMode は MPMovieRepeatModeOne に設定されており、これは iPad 2、3、およびシミュレーターで正常に動作します。ただし、iPad 1 では、ムービーが 1 回ループし、2 回目の再生の直後に停止します。プロジェクトは ARC なしの iOS 5 です (GM から 5.1.1 までテスト済み)。

- (void)loadVideo {
    NSString *urlStr = [[NSBundle mainBundle] pathForResource:@"movieFileName.m4v" ofType:nil];
    self.videoPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:urlStr]];
    self.videoPlayer.controlStyle = MPMovieControlStyleNone;
    self.videoPlayer.scalingMode = MPMovieScalingModeFill;
    self.videoPlayer.repeatMode = MPMovieRepeatModeOne;
    self.videoPlayer.view.userInteractionEnabled = NO;
    [self.videoPlayer.view setFrame:self.movieContainer.bounds];
    [self.movieContainer addSubview:self.videoPlayer.view];
}

iPad 1 でムービーをループさせるにはどうすればよいですか?

4

1 に答える 1

1

多くのことを試した後、私はついにこの問題の解決策を見つけました:

再生状態の変更の通知MPMoviePlayerPlaybackStateDidChangeNotificationに登録した後、ムービーは無限にループし、iPad 1での2回目の再生後に停止しません。この動作は、iPad 2、3、またはシミュレーターでは発生しなかったことに注意してください。

通知のために実行されるセレクターは空であってはなりません。ブール値か何かを割り当てるだけです。上記の拡張コードは次のようになります。

- (void)loadVideo {
    // Create the controller
    NSString *urlStr = [[NSBundle mainBundle] pathForResource:@"movieFileName.m4v" ofType:nil];
    NSURL *url = [NSURL fileURLWithPath:urlStr];
    self.videoPlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];

    // Configure the controller
    self.videoPlayer.controlStyle = MPMovieControlStyleNone;
    self.videoPlayer.scalingMode = MPMovieScalingModeFill;
    self.videoPlayer.repeatMode = MPMovieRepeatModeOne;
    self.videoPlayer.view.userInteractionEnabled = NO;
    [self.videoPlayer.view setFrame:self.movieContainer.bounds];

    // Register for notifications
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerNotification:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:videoPlayer];
    self.listeningToMoviePlayerNotifications = YES;

    // Add its view to the hierarchy
    [self.movieContainer addSubview:self.videoPlayer.view];
}

- (void)moviePlayerNotification:(NSDictionary *)userInfo {
    // Do anything here, for example re-assign the listeningToMoviePlayerNotification-BOOL
    self.listeningToMoviePlayerNotifications = YES;
}
于 2012-08-01T17:36:50.643 に答える