似乎我遇到了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方法才能自动播放和重复。
拜托,我有什么问题吗?关于如何解决的建议?任何帮助将不胜感激。
答案 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方法中手动开始播放