MPMoviePlayerController sous IOS5

ettiboettibo Membre
06:11 modifié dans Vos applications #1
Bonjour, bonjour,

j'utilise la classe MPMoviePlayerController pour lire des vidéos dans mon programme.
J'essaye de passer une application de IOS 4.3 en 5.0.
Sous 4.3 la vidéo se lit sans aucun soucis, mais sous 5.0, la vidéo ne se lance ou pas (elle se finit tout de suite).
Je ne comprends pas d'où vient le soucis.
Voici mon code

<br />- (id)initWithFileName:(NSString *)fileName ofType:(NSString *)type title:(NSString *)t<br />{<br />&nbsp; &nbsp; self = [super init];<br />&nbsp; &nbsp; if (self) {<br />&nbsp; &nbsp; &nbsp; &nbsp; self.navigationItem.title = t;<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc ] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(playMovie)];<br />&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; mMoviePlayer = [[MPMoviePlayerController alloc] init];<br />&nbsp; &nbsp; &nbsp; &nbsp; if (UIDeviceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation]) == TRUE)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mMoviePlayer.view.frame = CGRectMake(0, 0, 768, 1024);<br />&nbsp; &nbsp; &nbsp; &nbsp; else<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mMoviePlayer.view.frame = CGRectMake(0, 0, 1024, 748);<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; [self.view addSubview: [mMoviePlayer view]];<br />&nbsp; &nbsp; &nbsp;  <br />&nbsp; &nbsp; &nbsp; &nbsp; NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:type];<br />&nbsp; &nbsp; &nbsp; &nbsp; NSLog(@&quot;File: %@&quot;, filePath);<br />&nbsp; &nbsp; &nbsp; &nbsp; NSURL *url = [NSURL URLWithString: filePath]; <br />&nbsp; &nbsp; &nbsp;  if (url)<br />&nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [mMoviePlayer setContentURL:url];<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [mMoviePlayer play];<br />&nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; [[NSNotificationCenter defaultCenter]<br />&nbsp; &nbsp; &nbsp; &nbsp;  addObserver:self<br />&nbsp; &nbsp; &nbsp; &nbsp;  selector:@selector(moviePlayBackDidFinish:)<br />&nbsp; &nbsp; &nbsp; &nbsp;  name:MPMoviePlayerPlaybackDidFinishNotification<br />&nbsp; &nbsp; &nbsp; &nbsp;  object:mMoviePlayer];<br />&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; [[NSNotificationCenter defaultCenter]<br />&nbsp; &nbsp; &nbsp; &nbsp;  addObserver:self<br />&nbsp; &nbsp; &nbsp; &nbsp;  selector:@selector(movieExitFullScreen)<br />&nbsp; &nbsp; &nbsp; &nbsp;  name:MPMoviePlayerDidExitFullscreenNotification<br />&nbsp; &nbsp; &nbsp; &nbsp;  object:mMoviePlayer];<br />&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; [[NSNotificationCenter defaultCenter]<br />&nbsp; &nbsp; &nbsp; &nbsp;  addObserver:self<br />&nbsp; &nbsp; &nbsp; &nbsp;  selector:@selector(movieEnterFullScreen)<br />&nbsp; &nbsp; &nbsp; &nbsp;  name:MPMoviePlayerDidEnterFullscreenNotification<br />&nbsp; &nbsp; &nbsp; &nbsp;  object:mMoviePlayer];<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; return self;<br />}<br />


Des idées?

Merci d'avance

Réponses

  • ettiboettibo Membre
    06:11 modifié #2
    Trouvé en fait, il ne faut plus passer par URLWithString, mais par fileUrlWithPath, si ça peut aider des gens :D
  • AliGatorAliGator Membre, Modérateur
    novembre 2011 modifié #3
    Merci pour ton retour et avoir posté la solution en effet ça peut aider d'autres :)

    NB : Ceci dit il aurait normalement fallu toujours passer par fileURLWithPath dès le début, qui permet de construire une URL de type "file://" (donc URL respectant les standards de la RFC) à  partir d'un chemin de fichier, car URLWithString s'attend à  ce que tu lui passes une chaà®ne représentant déjà  URL formattée correctement et respectant la RFC (donc une chaà®ne de type "http://host/path"; ou "file:///path" ou ce genre de chose, pas un chemin de fichier brut de forme).
    Donc je dirais plutôt que c'était étonnant que ça marche avant en fait ! Et c'est plutôt une correction apportée par iOS5 qu'autre chose si avant ça marchait -- alors que ça n'aurait pas dû
  • ettiboettibo Membre
    06:11 modifié #4
    Une chose aussi, je ne sais pas certains ont eu ce soucis, mais bon.
    Sur l'ipad 1 avec IOS5 pas de son, sur le 2, du son.
    Des idées?
  • AliGatorAliGator Membre, Modérateur
    06:11 modifié #5
    Question conne : le volume n'est pas à  zéro ? Et le mode "mute" n'est pas activé ?
    (C'est parfois les choses les plus simples qu'on trouve pas quand on cherche pendant 3h...)
  • ettiboettibo Membre
    06:11 modifié #6
    Ah ouais, c'était bien le mode mute  :o
    J'avais mis le volume à  fond, mais pas viré le mute.
    Merci un mystère de corrigé^^
Connectez-vous ou Inscrivez-vous pour répondre.