2010-01-11 8 views
3

Je dois avoir la possibilité de jouer plus d'une vidéo dans une application.MPMoviePlayerController lire la vidéo seconde fois

Malheureusement, la deuxième fois que j'appuie sur la touche, la vidéo semble clignoter.

Je n'utilise ce code pour jouer vide

NSURL * url = [[[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource: @ "Film" ofType: @ "m4v"]] autorelease ]

MPMoviePlayerController * mp = [[MPMoviePlayerController alloc] initWithContentURL: url];

mp.movieControlMode = MPMovieControlModeDefault;

[mp play];

moviePlayer = mp;

[libération de mp];

Quelqu'un peut-il me dire où peut être le problème? Merci d'avance!

MISE À JOUR 1: Il semble que l'exemple Apple MoviePlayer a le même problème.

Répondre

4

vous pouvez aussi le faire en réglant le temps de lecture initiale à -1,0 avant d'appeler la fonction de lecture

mp.initialPlaybackTime = -1.0; 

Mettez ce code avant que votre méthode de jeu ne soit appelée.

1

J'ai rencontré ce problème et je l'ai résolu en utilisant le système de notification pour exécuter un rappel après la fin de la lecture de MPMoviePlayerController et en libérant l'objet lecteur là-bas.

Ajouter une notification avant de jouer le film:

NSURL *url = [[[NSURL alloc]initFileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Movie" ofType:@"m4v"]] autorelease]; 

MPMoviePlayerController *mp = [[MPMoviePlayerController alloc]initWithContentURL:url]; 

mp.movieControlMode = MPMovieControlModeDefault; 

//***Add this line*** 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:mp]; 

[mp play]; 

Ensuite, ajoutez la méthode de rappel,

-(void)myMovieFinished:(NSNotification*)aNotification 
{ 
    MPMoviePlayerController *moviePlayer = [aNotification object]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerDidFinishNotification object:moviePlayer]; 
    [moviePlayer release]; 
} 
+0

Toujours le même problème. – mxg

+0

Etes-vous sûr que le movieplayercontroller d'origine n'est pas conservé quelque part? –

0

Il coutures que la seule solution est ... de faire l'application pour 3.1

0

Je trouve également exécuter le système d'exploitation 3.1 ou version ultérieure du simulateur peut être joué well.It ne semble blinking.But quand j'ajoute

initialPlaybackTime = -1.0 

il jouera également bien sur OS 3.0.