Как предварительно загрузить мой фильм перед его воспроизведением (MPMoviePlayerController) - PullRequest
1 голос
/ 09 марта 2012

Я хотел бы предварительно загрузить свой MPMoviePlayerController, проблема в том, что MPMoviePlayerController занимает слишком много времени, чтобы подготовиться, поэтому отображается значок загрузки, затем отображается видео, если я воспроизводлю другое видео после его непосредственного воспроизведения, но не первого время ...: (

я знаю, что это так: MPMoviePlayerLoadStateDidChangeNotification Но я не знаю, как это работает на самом деле.

Это мой код:

- (void) startSlideShow:(NSString *)nameFile
{    
    NSURL *url = [NSURL fileURLWithPath:nameFile];
    MPMoviePlayerController *moviePlayer = 
    [[MPMoviePlayerController alloc] initWithContentURL:url];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(moviePlayBackDidFinish:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                               object:moviePlayer];

    moviePlayer.view.frame = CGRectMake(0, 0, 768, 1024);
    moviePlayer.controlStyle = MPMovieControlStyleDefault;

    [self.view addSubview:moviePlayer.view];
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.5];
    [animation setType:kCATransitionFade];
    [animation setSubtype:kCATransitionFromLeft];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

    [[self.view layer] addAnimation:animation forKey:@"SwitchToView1"];
    [moviePlayer setFullscreen:YES animated:YES];
   }


-(void)moviePlayBackDidFinish: (NSNotification*)notification
{ 
    MPMoviePlayerController *moviePlayer = [notification object];

    [[NSNotificationCenter defaultCenter] removeObserver:self      
                                                    name:MPMoviePlayerPlaybackDidFinishNotification
                                                  object:moviePlayer];

    if ([moviePlayer respondsToSelector:@selector(setFullscreen:animated:)])
    {
       [moviePlayer.view removeFromSuperview];
    }
    [self checkResources];
}

1 Ответ

0 голосов
/ 09 марта 2012

Я не думаю, что вы можете ускорить процесс загрузки видео. Единственное, что вы можете сделать, это загрузить видео раньше, чем отобразить его.

Для уведомлений о состоянии игрока, смотрите мой ответ здесь: https://stackoverflow.com/a/9073946/624808

...