J'utilisais MPMoviePlayer pour lire une courte vidéo dans mon application sans problèmes dans le SDK 3.1.3. J'ai apporté les modifications au code dans SDK 4 mais la vidéo ne joue pas. Je viens d'obtenir un écran noir et audio. Le Centre de développement Apple n'a pas d'exemple de code pour cette classe pour le dernier SDK. Le code que j'utilise est le suivant:problème en utilisant MPMovieController dans iPhone SDK 4.0
- (void)viewDidLoad {
[super viewDidLoad];
//videoPlayer is a MPMoviePlayerController object defined in the header file of the view controller
if (videoPlayer == nil){
NSString * videoPath = [[NSBundle mainBundle] pathForResource:@"myvideo" ofType:@"mp4"];
if (videoPath == NULL){
return;
}
NSURL * videoURL = [NSURL fileURLWithPath:videoPath];
videoPlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
videoPlayer.controlStyle = MPMovieControlStyleNone;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:@"MPMoviePlayerPlaybackDidFinishNotification" object:movieController.moviePlayer];
[videoPlayer play];
[videoPlayer setFullscreen:YES];
[self.view addSubview:videoPlayer.view];
}
}
Ce qui précède résulte uniquement de la lecture de l'audio avec un écran noir. La notification est appelée correctement à la fin de la lecture.
Lorsque ce qui précède n'a pas fonctionné, alors j'ai même essayé d'utiliser la nouvelle classe MPMoviePlayerViewController comme suit:
- (void)viewDidLoad {
[super viewDidLoad];
NSString * videoPath = [[NSBundle mainBundle] pathForResource:@"myvideo" ofType:@"mp4"];
if (videoPath == NULL){
return;
}
NSURL * videoURL = [NSURL fileURLWithPath:videoPath];
//movieController is an MPMoviePlayerViewController object defined in the header file of view controller
movieController = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:@"MPMoviePlayerPlaybackDidFinishNotification" object:movieController.moviePlayer];
[movieController.moviePlayer setFullscreen:YES];
[movieController.moviePlayer play];
[self presentMoviePlayerViewControllerAnimated:movieController];
}
Même problème persiste - Je peux entendre l'audio et la notification à la fin de la lecture est appelée comme prévu. Cependant, je vois juste un écran noir au lieu de la vidéo.
Il n'y a rien de mal dans l'encodage de la vidéo parce que la même vidéo joue bien dans iTunes ainsi que sur mon iPod Touch dans la liste de lecture de vidéos régulières.
Quelqu'un pourrait-il m'aider avec ce problème?
Merci à l'avance