ムービー ループを作成しようとしましたが、ビデオが終了したときに MPMoviePlayerPlaybackDidFinishNotification が呼び出されることはありません。
これが私のコードです:
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"dent4" ofType:@"mp4"];
NSURL *fileURL = [NSURL fileURLWithPath:filepath];
self.moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
self.moviePlayerController.movieSourceType = MPMovieSourceTypeFile;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlaybackComplete:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:self.moviePlayerController];
[self.moviePlayerController.view setFrame:CGRectMake(playButton.frame.origin.x,
playButton.frame.origin.y,
playButton.frame.size.width,
playButton.frame.size.height)];
self.moviePlayerController.view.backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
self.moviePlayerController.shouldAutoplay = YES;
self.moviePlayerController.initialPlaybackTime = 0;
[self.moviePlayerController setFullscreen:NO];
self.moviePlayerController.controlStyle = MPMovieControlStyleNone;
self.moviePlayerController.scalingMode = MPMovieScalingModeAspectFill;
self.moviePlayerController.repeatMode = MPMovieRepeatModeOne;
[self.view addSubview:self.moviePlayerController.view];
[self.moviePlayerController prepareToPlay];
[self.moviePlayerController play];
ビデオは一度正しく再生されますが、終了イベントは発生しません。
- (void)moviePlaybackComplete:(NSNotification *)note
{
NSLog(@"END");
if (note.object == self.moviePlayerController) {
NSInteger reason = [[note.userInfo objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue];
if (reason == MPMovieFinishReasonPlaybackEnded) {
NSLog(@"REPLAY");
[self.moviePlayerController prepareToPlay];
[self.moviePlayerController play];
}
}
}
別の奇妙なビデオは、エミュレーターで正しくループしていますが (ただし、moviePlaybackComplete は呼び出されません)、デバイスでは 1 回しか再生されません。
誰でも私を助けることができますか?フルスクリーンでは呼び出されていないという投稿をすでに見ていますが、フルスクリーンモードではありません。