-1

J'utilise MPMoviePlayerViewController pour lire le flux vidéo du serveur, tout le reste fonctionne bien. Mon problème est que quand je joue la vidéo, elle joue automatiquement et passe à l'état de pause automatiquement si aucun contenu jouable n'est disponible, et ne joue pas après avoir chargé le contenu.MPMoviePlayer s'arrête automatiquement en streaming

movieController = [[MPMoviePlayerViewController alloc] init]; 
movieController.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming; 
[movieController.moviePlayer setContentURL:mediaURL]; 
[movieController.moviePlayer prepareToPlay]; 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(moviePlayBackDidFinish:) 
              name:MPMoviePlayerPlaybackDidFinishNotification 
              object:nil]; 
[movieController.moviePlayer setControlStyle:MPMovieControlStyleFullscreen]; 
[movieController.moviePlayer setFullscreen:YES]; 
[movieController.moviePlayer setShouldAutoplay:YES]; 
[movieController.moviePlayer play]; 
[self presentMoviePlayerViewControllerAnimated:movieController]; 

Ceci est mon code utilisé pour lire la vidéo à partir de l'URL donnée avec mediaURL. J'ai essayé d'ajouter MPMoviePlayerPlaybackStateDidChangeNotification pour vérifier l'état a changé à MPMoviePlaybackStatePaused, son fonctionne également bien. Également vérifié MPMovieLoadState avec MPMovieLoadStatePlaythroughOK en utilisant MPMoviePlayerLoadStateDidChangeNotification le problème est que ne pas obtenir le MPMovieLoadStatePlaythroughOK après pause automatiquement. This link

Aussi est-il possible d'obtenir le bouton de pause autre que MPMoviePlayerPlaybackStateDidChangeNotification, car la notification est également déclenchée pour d'autres raisons.

Répondre

0

J'ai ajouté un bouton transparent au-dessus du bouton Lecture/Pause par défaut dans MPMoviePlayerViewController comme suit.

CGRect frame = CGRectZero; 
CGFloat width = 100, height= 50; 
frame.origin.x = CGRectGetHeight(movieController.moviePlayer.view.frame)/2 - (width/2); 
frame.origin.y = CGRectGetWidth(movieController.moviePlayer.view.frame) - height; 
frame.size = CGSizeMake(width, height); 
UIButton* playButton = [[UIButton alloc] initWithFrame:frame]; 
playButton.backgroundColor = [UIColor clearColor]; 
[playButton addTarget:self action:@selector(playButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; 
[movieController.moviePlayer.view addSubview:playButton]; 


- (void) playButtonTapped:(UIButton*) sender { 
if (APP_DELEGATE.movieController.moviePlayer.playbackState == 1) { 
    [APP_DELEGATE.movieController.moviePlayer pause];   
} 
else if (APP_DELEGATE.movieController.moviePlayer.playbackState == 2) 
{ 
    [APP_DELEGATE.movieController.moviePlayer play];   
} 
}