2014-11-04 110 views
0

我有一个问题,在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; 
     } 
} 

回答

0

我发现了一个很奇怪的修复这个PROBL EM。在我的情况下,我会滑动到视频和音频播放,并没有图片。如果我刷卡并回来,一切正常,所以只是为了它的乐趣我试过这个

MPMoviePlayerController *mp = [self.arrayOfScrollView objectAtIndex:xx]; 
[mp play]; 
[mp stop]; 
[mp play]; 

奇怪的是,工作。既然你在六个月前发布了这篇文章,如果你发现了另一种解决方法,我很想知道它。

相关问题