2012-09-11 2 views
2

J'essaie de charger un film mp4 de 25 secondes à partir de mon fichier de ressources, mais lorsque je le joue, mon sélecteur MPMoviePlayerPlaybackDidFinishNotification est immédiatement appelé avec MPMovieFinishReasonPlaybackEnded. Lorsque j'identifie mon état de lecture, cela affiche ceci:MPMoviePlayerController se termine immédiatement

MPMoviePlaybackStatePlaying 
MPMoviePlaybackStatePaused 
MPMoviePlaybackStateStopped 
MovieFinishReasonPlaybackEnded 
MPMoviePlaybackStatePlaying 
MPMoviePlaybackStatePaused 

même si j'appelle une seule fois la méthode de lecture. J'espère que quelqu'un peut m'aider.

- Edité pour montrer mon code:

MPMoviePlayerController* player = [[[MPMoviePlayerController alloc] initWithContentURL:movieURL] autorelease]; 

if (player) 
{ 

    self.moviePlayerController = player; 

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

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlayerPlaybackStateDidChange:) 
               name:MPMoviePlayerPlaybackStateDidChangeNotification 
               object:player]; 


    player.contentURL = movieURL; 

    player.movieSourceType = MPMovieSourceTypeFile; 

    player.controlStyle = MPMovieControlStyleNone; 

    player.fullscreen = YES; 

    switch (orientation) { 
     case UIInterfaceOrientationLandscapeLeft: 
      player.view.transform = CGAffineTransformMakeRotation(90.0f * (M_PI/180.0f)); 
      break; 
     case UIInterfaceOrientationLandscapeRight: 
      player.view.transform = CGAffineTransformMakeRotation(-90.0f * (M_PI/180.0f)); 
      break; 
     default: 
      break; 
    } 

    player.view.frame = self.view.bounds; 

    [self.view addSubview:player.view]; 
} 

[self.moviePlayerController play] 

Répondre

0

Sans avoir plus de votre code à regarder, je suggère d'essayer de jouer un autre fichier que vous savez peut jouer. Par exemple, récupérez le film de cet exemple de projet: http://developer.apple.com/library/ios/#samplecode/MoviePlayer_iPhone/Introduction/Intro.html et regardez s'il est lu.

J'avais quelque chose de similaire qui m'arrivait lorsque j'essayais de lire un fichier qui n'était pas correctement formaté.


Hmm ... Je ne vois pas ce qui ne va pas. Êtes-vous sûr que movieURL est correct? Comment tu l'as obtenu? Pour l'anecdote, voici comment je présente des films, même si cela n'aurait pas tout à fait le même effet que ce que vous faites.

NSString *path = [[NSBundle mainBundle] pathForResource:movieFileName ofType:@"m4v"]; 

// If path is NULL (the resource does not exist) return to avoid crash 
if (path == NULL) 
    return; 

NSURL *url = [NSURL fileURLWithPath:path]; 
MPMoviePlayerViewController *mpViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; 
mpViewController.moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 
mpViewController.moviePlayer.shouldAutoplay = YES; 

// NOTE: This can sometimes crash the app in the Simulator. This is a known bug 
// in xcode: http://stackoverflow.com/a/8317546/472344 
[self presentMoviePlayerViewControllerAnimated:mpViewController]; 
[mpViewController release]; 
+0

J'ai essayé Movie.m4v à partir du lien et cela ne fonctionne toujours pas. – Jebadiah

+0

Ensuite, vous devrez probablement montrer votre code pour que quelqu'un puisse vous aider. – Darren

+0

Il suffit de modifier ma question. Je vous remercie. – Jebadiah

1

Est-self.moviePlayerController un bien conservé? Si ce n'est pas le cas, l'instance MPMoviePlayerController sera publiée très rapidement (par le autorelease), et vous pourriez avoir un comportement similaire.

Questions connexes