MPMoviePlayerController有时播放音频,而不是在淡入淡出时的视频
问题描述:
我有一个问题,在UIScrollView中,我有一些视图(视频控制器在下面)充当视频内容的页面(最初显示缩略图视图)。MPMoviePlayerController有时播放音频,而不是在淡入淡出时的视频
有时(但并非总是)当我滚动到下一页时,视频的音频开始播放,但没有视觉效果。这似乎并不当我不褪色的视图中的发生
视频初始化代码为:
MPMoviePlayerController* moviePlayer = [[MPMoviePlayerController alloc] init];
self.moviePlayer = moviePlayer;
[moviePlayer setControlStyle:MPMovieControlStyleNone];
[moviePlayer setRepeatMode:MPMovieRepeatModeOne];
[moviePlayer.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
moviePlayer.backgroundView.backgroundColor = [UIColor clearColor];
moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
moviePlayer.contentURL = [NSURL URLWithString:[videoData.video src]];
[self.videoController.view addSubview:self.moviePlayer.view];
[self.videoController.view bringSubviewToFront:moviePlayer.view];
[moviePlayer.view setAlpha:0.0f];
// Movie Observer
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkMovieStatus:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];
// Add tap handler
UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onPlayerTapped:)];
singleFingerTap.numberOfTapsRequired = 1;
singleFingerTap.delegate = self;
[self.moviePlayer.view addGestureRecognizer:singleFingerTap];
[moviePlayer prepareToPlay];
和播放代码(尽量避免黑色闪光在视频的开始)是:
- (void)checkMovieStatus:(NSNotification *)notification {
if(self.moviePlayer.readyForDisplay && (MPMovieLoadStatePlayable | MPMovieLoadStatePlaythroughOK)) {
[self.moviePlayer play];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerLoadStateDidChangeNotification object:nil];
[UIView animateWithDuration:0.4f animations:^{
[self.moviePlayer.view setAlpha:1.0f];
} completion:^(BOOL finished) {
//[self.moviePlayer play]; // tried here as well
}];
}
}
代码,以消除滚动视频的看法是:
- (void)removeMoviePlayer {
if(self.moviePlayer) {
[self.moviePlayer stop];
[self.moviePlayer.view removeFromSuperview];
self.moviePlayer = nil;
}
}
答
我发现了一个很奇怪的修复这个PROBL EM。在我的情况下,我会滑动到视频和音频播放,并没有图片。如果我刷卡并回来,一切正常,所以只是为了它的乐趣我试过这个
MPMoviePlayerController *mp = [self.arrayOfScrollView objectAtIndex:xx];
[mp play];
[mp stop];
[mp play];
奇怪的是,工作。既然你在六个月前发布了这篇文章,如果你发现了另一种解决方法,我很想知道它。