2010-10-15 4 views
6

J'écris une application qui stocke les films dans le rouleau de photos dans le dossier de documents local pour l'application. Je peux lire des films à distance en utilisant le MPMoviePlayer, mais en essayant de lire un film stocké dans le dossier de documents pour l'application retourne toujours MPMovieLoadStateUnknown.MPMoviePlayer charger et lire un film enregistré dans les documents de l'application

Les notifications sont toutes envoyées et reçues du centre de notification par défaut (MPMoviePlayerLoadStateDidChangeNotification, MPMoviePlayerPlaybackDidFinishNotification). Une boîte d'alerte s'affiche peu après l'obtention du message loadStateUnknown dans la console, indiquant que le film n'a pas pu être lu et que l'application reçoit alors la notification de lecture terminée.

Je pense qu'il peut être un cas que le nom de fichier (MPMoviePlayer ne peut prendre une URL comme emplacement de l'actif) ne peut pas être trouvé. Quelqu'un at-il traité de cette question ou similaire?

Répondre

1

Étant donné qu'aucun des autres réponses semble résoudre le problème, je suis enclin à penser que le problème pourrait être avec le chemin du fichier Documents que vous produisez.

Vous devez utiliser la méthode suivante pour générer le chemin d'accès au dossier de l'application des documents:

NSString *userDocumentsPath = nil; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
if ([paths count] > 0) 
{ 
    userDocumentsPath = [paths objectAtIndex:0]; 
} 
+0

Pense que j'ai essayé tout sauf ça. Je ne peux pas vous remercier assez! – Kyle

+0

Content de pouvoir aider! :) –

0

avez-vous essayé de convertir le chemin de fichier local à une URL

[NSURL URLWithString: [NSString stringWithFormat:@"file:/%@//",filePath]]; 

s'il y a des espaces que vous chemin du fichier, vous devrez les convertir avant de créer l'URL

filePath = [filePath stringByReplacingOccurrencesOfString:@"/" withString:@"//"]; 
filePath = [filePath stringByReplacingOccurrencesOfString:@" " withString:@"%20"]; 
0

Le Le modèle de données de base convertit un chemin de fichier en un URL comme celui-ci:

NSURL *storeUrl = [NSURL fileURLWithPath:whatever]; 

Cela semble faire tout f l'espace correct s'échappant et des trucs parce que je l'utilise pour charger un fichier avec un espace dans le chemin.

+0

Faire cela donne le même résultat que ma question Orignal. Si je fais [NSData dataWithContentsOfURL: storeUrl] et NSLog cela, je reçois une liste géante de numéros HEX, donc je sais que c'est la recherche du fichier, ou les données seraient nulles. Est-ce que le fichier pour MPMoviePlayer nécessite une extension? – Kyle

+0

Avez-vous testé le film pour vous assurer qu'il est lu lorsqu'il est glissé dans iTunes et synchronisé? – Nimrod

+0

Le film a été créé dans PhotoBooth et envoyé par e-mail à l'ipad. Le film a été enregistré comme iPhone compatible avec Quicktime et joue à partir du rouleau de photos, et sur le Mac. – Kyle

0

Je ne sais pas si cela va vous aider. Dans ce tutoriel, il y a quelques lignes de code qui va probablement vous apporter sur le droit chemin:

// Unless state is unknown, start playback 
if ([mp loadState] != MPMovieLoadStateUnknown) 
... 

Vous trouverez cet extrait dans la méthode suivante:

- (void) moviePlayerLoadStateChanged:(NSNotification*)notification 

est ici le lien vers le tutoriel: Tutorial

Espérons que cela vous aidera ...

Questions connexes