MPMoviePlayerController me donne une vue vide noire, pas de lecture video

iOS 5.1, voici le code:

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL: [NSURL URLWithSsortingng:@"map.mp4"]]; [player prepareToPlay]; [player.view setFrame: self.view.bounds]; // player's frame must match parent's [self.view addSubview: player.view]; // ... [player play]; 

en fait, c'est exactement la même chose que la reference pomme, mais quand je clique sur le button pour utiliser cette fonction, il y a juste un Rectangle noir qui rest, pas de vedio, pas de son, pas de béguin, donc je veux savoir comment faire ce travail

Désolé pour la réponse très tardive. La solution est plutôt bizarre. Mais cela m'a aidé à continuer tout en faisant face au même problème.

MPMovieSourceTypeStreaming est la chose que vous avez manquée.

 MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL: [NSURL URLWithSsortingng:@"map.mp4"]]; [player prepareToPlay]; [player.view setFrame: self.view.bounds]; // player's frame must match parent's player.movieSourceType = MPMovieSourceTypeStreaming; [self.view addSubview: player.view]; // ... [player play]; 

Vous envoyez peut-être votre

 [player play] 

message trop tôt.

Utilisez l'observation de notification suivante

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

Pour écouter le loadState pour passer à jouable. Pour vérifier cette mise à jour, procédez comme suit:

 - (void)playMovie:(NSNotification *)notification { MPMoviePlayerController *player = notification.object; if (player.loadState & MPMovieLoadStatePlayable) { NSLog(@"Movie is Ready to Play"); [player play]; } } 

Le film devrait commencer à jouer une fois qu'il est prêt.

Essayez ce code ci-dessous pour lire la video de votre projet

  NSBundle *bundle = [NSBundle mainBundle]; NSSsortingng *moviePath = [bundle pathForResource:@"map" ofType:@"mp4"]; NSURL *movieURL = [[NSURL fileURLWithPath:moviePath] retain]; MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:movieURL]; [player prepareToPlay]; [player.view setFrame: self.view.bounds]; // player's frame must match parent's [self.view addSubview: player.view]; // ... [player play]; 

Merci..!

En se basant sur la réponse de @ Dinesh, la création de votre URL est incorrecte. La valeur de

 [NSURL URLWithSsortingng:@"map.mp4"] 

sera nul puisque @ "map.mp4" n'est pas une URL valide. Pour créer une URL valide à partir de l'set de l'application, faites ce que dit Dinesh. Pour créer une URL distante, vous feriez quelque chose comme

 [NSURL URLWithSsortingng:@"http://www.jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v"] 

L'URL doit contenir toutes ses parties: protocole, hôte, path d'access, file.

À la vôtre, Felipe

Ajoutez votre vue de controller de lecteur de film sur les windows principales comme:

  MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL: [NSURL URLWithSsortingng:@"map.mp4"]]; [player prepareToPlay]; [player.view setFrame: self.view.bounds]; AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; [appDelegate.window addSubview: player.view]; [player play]; 

J'espère que ça va marcher!

Votre lecteur devrait être une propriété de votre controller de vue, quelque chose comme ceci:

.h:

 @property(nonatomic,weak)MPMoviePlayerController *moviePlayer; 

.m:

  MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL: [NSURL URLWithSsortingng:@"map.mp4"]]; [player prepareToPlay]; [player.view setFrame: self.view.bounds]; // player's frame must match parent's //set the player to your property self.moviePlayer=player; [self.view addSubview: self.moviePlayer.view]; // ... [self.moviePlayer play]; 

Veuillez utiliser MPMoviePlayerViewController à cause du file MP4. Lorsque vous utilisez MOV, alors fonctionne parfaitement !!

 MPMoviePlayerViewController *moviePlayerViewController; -(void)PlayVideoController:(NSSsortingng*)videoUrl1 { NSURL *fileURL = [NSURL URLWithSsortingng:videoUrl1]; moviePlayerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:fileURL]; // Register for the playback finished notification. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerViewController.moviePlayer]; //Present [self presentMoviePlayerViewControllerAnimated:moviePlayerViewController]; // Play the movie! moviePlayerViewController.moviePlayer.movieSourceType = MPMovieSourceTypeFile; [moviePlayerViewController.moviePlayer play]; } -(void)myMovieFinishedCallback:(NSNotification*)aNotification { [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerViewController.moviePlayer]; [moviePlayerViewController release], moviePlayerViewController = nil; } 

Vous souhaiterez peut-être vérifier l'URL de la video pour les espaces vierges. Le code suivant fonctionne pour moi.

 - (IBAction)btnPlayVideo:(id)sender { self.strVideoUrl = [self.strVideoUrl ssortingngByAddingPercentEscapesUsingEncoding:NSUTF8SsortingngEncoding]; NSURL *fileURL = [NSURL URLWithSsortingng:[NSSsortingng ssortingngWithFormat:@"%@", self.strVideoUrl]]; NSLog(@"Url to play = %@", self.strVideoUrl); self.moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackComplete:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayerController]; [self.moviePlayerController.view setFrame:self.view.bounds]; [self.view addSubview:self.moviePlayerController.view]; self.moviePlayerController.shouldAutoplay = YES; self.moviePlayerController.fullscreen = YES; self.moviePlayerController.controlStyle=NO; [self.moviePlayerController prepareToPlay]; self.moviePlayerController.movieSourceType = MPMovieSourceTypeStreaming; [self.moviePlayerController play]; } - (void)moviePlaybackComplete:(NSNotification *)notification { self.moviePlayerController = [notification object]; [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayerController]; [self.moviePlayerController.view removeFromSuperview]; self.closeVideAdProp.hidden = NO; btnCloseAd.hidden=FALSE; }