2013-05-12 2 views
0

Я запускаю следующий код. Видео прекрасно воспроизводится, но после того, как он заканчивается, он просто переходит к черному экрану, мой оригинальный вид никогда не возвращается. Когда я нажимаю на черный экран, я просто вижу сообщение «loading .....» Может кто-то объяснить, что я делаю неправильно. Спасибовид не возвращается после просмотра видео

- (IBAction)video:(UIBarButtonItem *)sender 
{ 
    { 
     NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] 
              pathForResource:@"IMG_0973" ofType:@"MOV"]]; 
     moviePlayer=[[MPMoviePlayerController alloc] initWithContentURL:url]; 


     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer]; 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDonePressed:) name:MPMoviePlayerDidExitFullscreenNotification object:moviePlayer]; 



     moviePlayer.controlStyle=MPMovieControlStyleDefault; 
     //moviePlayer.shouldAutoplay=NO; 
     [moviePlayer play]; 
     [self.view addSubview:moviePlayer.view]; 
     [moviePlayer setFullscreen:YES animated:YES]; 

    } 

} 

- (void) moviePlayBackDonePressed:(NSNotification*)notification 
{ 
    [moviePlayer stop]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerDidExitFullscreenNotification object:moviePlayer]; 


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

    moviePlayer=nil; 
} 

- (void) moviePlayBackDidFinish:(NSNotification*)notification 
{ 
    [moviePlayer stop]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer]; 

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

Можете ли вы нажать на фильм, чтобы открыть кнопку * Готово *? – Undo

ответ

0

В вашем видео IBAction вам необходимо добавить подвью, прежде чем вы скажете ему, чтобы играть. Переключите строки [playPlayer play] и [self.view addSubview: moviePlayer.view]. Дайте нам знать, что это работает! На самом деле вам может понадобиться поместить игру moviePlayer даже после полной экранной линии.

+0

Извините, я неправильно понял вопрос. Вы используете NSNotification. Когда я играл в своем фильме в своем приложении, я использовал тот же код, но без NSNotification и видео воспроизводил, а кнопка «Готово» отклонила мое видео и вернула исходное представление. Тем не менее, дайте нам знать, как это происходит. – Douglas

+0

сделанная кнопка работает хорошо. Это когда фильм заканчивается, и он идет в черное и остается там. Когда я нажимаю на экран, он отображает «бег», я переключал строки на ваше предложение, но никаких изменений. – vboombatz

+0

Вот что я сделал, чтобы воспроизвести видео без MPMoviePlayer. Я создал ячейку для моего представления таблицы с UIWebview в ней. Затем ... VideoCell * videoCell = [tableView dequeueReusableCellWithIdentifier: @ "VideoCell"]; NSURL * url = [NSURL URLWithString: [_ theBigArray objectAtIndex: indexPath.row]]; NSURLRequest * запрос = [запрос NSURLRequestWithURL: url]; [videoCell.webView loadRequest: request]; cell = videoCell; _theBigArray содержит ссылку на видео, которое я хочу показать. Это делает небольшой предварительный просмотр видео с помощью кнопки воспроизведения. Нажмите кнопку воспроизведения, и видео воспроизводится в полноэкранном режиме. – Douglas

0
i think this will help you ..... 


-(void)playVideo 
{ 

    NSString *contentURL = [[NSBundle mainBundle] pathForResource:@"xyz" ofType:@"mp4"]; 

    MPMoviePlayerViewController *moviePlayerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:contentURL]]; 

    if (moviePlayerViewController) 
    { 
     [moviePlayerViewController.moviePlayer setMovieSourceType:MPMovieSourceTypeFile]; 

     [moviePlayerViewController.moviePlayer setFullscreen:YES]; 

     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MovieFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerViewController.moviePlayer]; 

     [moviePlayerViewController.moviePlayer play]; 

     [navi presentModalViewController:moviePlayerViewController animated:NO]; 

     [moviePlayerViewController release]; 

     moviePlayerViewController = nil; 
    } 

} 
-(void)MovieFinished:(NSNotification *)notification 
{ 
    MPMoviePlayerController *player = (MPMoviePlayerController *)notification.object; 

    [player stop]; 


    [[NSNotificationCenter defaultCenter] removeObserver:self]; 

//do rest of the stuff 


} 
+0

Откуда берется «нави»? Благодарю. – vboombatz

+0

Это объект uinavigationcontroller, чтобы нажать viewcontroller на moviePlayerViewController, чтобы воспроизвести видео, или вы можете использовать presentModalViewController –

1

Добавить это уведомление метод

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePreloadDidFinish:) name:MPMoviePlayerLoadStateDidChangeNotification 
               object:player]; 

Этот метод вызывается после загрузки фильма и в этом методе вы добавите MoviePlayer вид.

-(void)moviePreloadDidFinish:(NSNotification*)notification 
{ 

    moviePlayer.controlStyle=MPMovieControlStyleDefault; 
    [self.view addSubview:moviePlayer.view]; 
    [moviePlayer play]; 
    [moviePlayer setFullscreen:YES animated:YES]; 

} 
Смежные вопросы