itemFailedToPlayToEnd - MPMoviePlayerController - iOS7
En cours d'exécution dans un drôle de problème lors de la mise à jour de mon application pour iOS 7
. Pour iOS 6
, il n'y a pas de problème et les vidéos sont toujours chargées. Cependant ce n'est pas le cas ici.
J'ai un scrollview
qui affiche playlistItems
- et une fois que vous cliquez sur le playlistItem
, un MPMoviePlayerController
est créé pour afficher la liste de lecture de l'élément (vidéo).
Voici la méthode que je crois est à l'origine de problèmes:
- (void) play:(NSInteger)itemId withAutostart:(BOOL)autostart {
//remember whether it is in fullscreen or not to restore for the next playlist item
self.playerInFullscreen = self.player.isFullscreen;
if (player != nil) {
[self.player setFullscreen:NO animated:NO];
[self stopListeningPlaybackFinishedEvents];
[player stop];
[self startListeningPlaybackFinishedEvents];
}
PlaylistItem * pi = [dbHelper getPlaylistItem:itemId];
NSURL *movieURL = [pi getMovieUrl];
if (DELEGATE.useSSL) {
NSURLCredential *credential = [[NSURLCredential alloc]
initWithUser: DELEGATE.username
password: DELEGATE.password
persistence: NSURLCredentialPersistenceForSession];
NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc]
initWithHost: [movieURL host]
port: 80
protocol: [movieURL scheme]
realm: [movieURL host]
authenticationMethod: NSURLAuthenticationMethodHTTPBasic];
[[NSURLCredentialStorage sharedCredentialStorage]
setDefaultCredential: credential
forProtectionSpace: protectionSpace];
[protectionSpace release];
[credential release];
}
MPMoviePlayerController * temp = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
[temp prepareToPlay];
self.player = temp;
[temp release];
player.shouldAutoplay = autostart;
player.view.frame = movieViewContainer.bounds;
[movieViewContainer addSubview:player.view];
NSLog(@"movie added to subview");
[player setFullscreen:self.playerInFullscreen animated:NO];
[self.view setNeedsDisplay];
}
Le film devient chargé de l' MovieContainerView
.
- (void)playlistItemSelected:(NSInteger)itemId withAutostart:(BOOL) autostart {
for(UIView *subview in [thumbsScrollView subviews]) {
if ([subview isKindOfClass:[PlaylistItemView class]] == YES ) {
PlaylistItemView *piv = ((PlaylistItemView *) subview);
[piv setCurrent: piv.playlistItem._id == itemId];
if (piv.playlistItem._id == itemId) {
[self ensurePlaylistItemViewVisible:piv];
}
}
}
[[movieViewContainer subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
self.currentPlaylistItem = [dbHelper getPlaylistItem:itemId];
[self updateMetadataArea:itemId];
if ([_currentPlaylistItem.type isEqual:VIDEO_TYPE]) {
self.zoomButtonOut.hidden = YES;
self.zoomButtonIn.hidden = YES;
[self play:itemId withAutostart:autostart];
}
else {
[self.player pause];
_zoomButtonIn.alpha = ZOOM_BUTTON_ALPHA;
_zoomButtonOut.alpha = ZOOM_BUTTON_ALPHA;
[self showPDFandImage:_currentPlaylistItem];
}
[self scrollViewDidEndDecelerating:nil];
}
C'est bizarre que cela fonctionne pour iOS 6
mais pas iOS 7
Voici le NSLog erreurs quand une vidéo ne prend pas en charge/lecture: <Error>: CGImageCreate: invalid image size: 0 x 0.
et: _itemFailedToPlayToEnd: {
kind = 1;
new = 2;
old = 0;
}
Avez-vous essayez d'écouter les
MPMoviePlayerPlaybackDidFinishNotification
de notification ? Il peut contient un objet error.OriginalL'auteur OxenBoxen | 2013-09-30
Vous devez vous connecter pour publier un commentaire.
Il serait deux questions
Problème avec l'url
a) Si c'est l'extraction à partir de l'api que vous avez à écrire ,[NSUrl urlwithString:"votre chaîne d'url"];
//votre chaîne d'url n'est pas youtube chaîne d'url.
b) Si c'est à partir de bundle chemin : [NSUrl fileWithPath:"Votre chemin"];
Problème avec le type de Source.
Ensemble scouce type quelconque , si elle ne fonctionne ensemble à d'autres types vice-versa
ou
OriginalL'auteur user40910
Je vais avoir le même problème sur mon iOS 7 version. Puis-je vous demander si vous avez des espaces blancs et des chiffres dans l'URL de votre vidéo?
espère que ces conseils vous aide un peu
J'ai eu une erreur lié. Suppression du nombre de mon nom de fichier est le remède. Merci pour cette idée.
OriginalL'auteur kevinl
Une astuce pour la mise en œuvre du système de fichiers local caches: inclure les extensions de fichiers
J'ai un local cache de téléchargement dans l'une de mes applications qui ne fait pas de distinction suivant le type de fichier [pour le meilleur ou pour le pire], résultant dans des fichiers sans types associés avec eux. Quand je sers le fichier à partir du serveur directement dans le film contrôleur, le fichier s'ouvre bien, mais quand elle est stockée localement dans le chemin:
[AppDocumentsDirectory]/123 (sans extension), il ne parvient pas à lire. Quand j'ai stocké le fichier que 123.mp4 il a réussi.
OriginalL'auteur binary_falcon
J'ai fini le test de l'application sur un ipod - et cela a fonctionné. L'url Im init avec le mpmoviecontroller n'ont pas tous les espaces que j'ai besoin de s'évader. Espérons que cela aide... les vidéos ne fonctionnent pas sur simulateur qui a été me jetant hors
OriginalL'auteur Nivesh666
J'ai eu ce même problème et il a été résolu par la mise en
Le problème que je voyais était que le film joueur de la pousser sur la manette de navigation, mais quand il est apparu qu'il allait disparaître, et je voudrais obtenir le _itemFailedToPlayToEnd erreur dans le journal
OriginalL'auteur quark
J'ai eu le même problème .
D'abord vérifiez que le fichier à partir duquel vous souhaitez visionner cette vidéo n'existe pas ou pas.Puis Jouer .
Dans mon cas, mon fichier est dans le répertoire de documents .donc
OriginalL'auteur Jayaprada