2010-10-15 6 views
6

Ich schreibe eine Anwendung, die die Filme in der Fotorolle in den lokalen Dokumentenordner für die App speichert. Ich kann Remote-Filme mit dem MPMoviePlayer wiedergeben. Wenn Sie jedoch versuchen, einen Film abzuspielen, der im Dokumentenordner für die App gespeichert ist, wird immer MPMovieLoadStateUnknown zurückgegeben.MPMoviePlayer laden und Film in App-Dokumente gespeichert

Die Benachrichtigungen werden alle vom Standardbenachrichtigungszentrum gesendet und empfangen (MPMoviePlayerLoadStateDidChangeNotification, MPMoviePlayerPlaybackDidFinishNotification). Kurz nach dem Abrufen der loadStateUnknown-Nachricht in der Konsole wird eine Warnmeldung angezeigt, dass der Film nicht abgespielt werden konnte und die App dann die Benachrichtigung über die Wiedergabe der Filmwiedergabe erhält.

Ich denke, dass es der Fall sein kann, dass der Dateiname (MPMoviePlayer kann nur eine URL als Asset-Speicherort nehmen) nicht gefunden werden kann. Hat sich jemand mit diesem Thema oder Ähnlichem beschäftigt?

Antwort

1

Da keiner der anderen Antworten scheinen, das Problem zu lösen, ich bin geneigt, zu denken, dass das Problem mit dem Dokumentdateipfad sein kann, den Sie produzieren.

Sie sollten die folgende Methode verwenden Sie den Pfad zu den Dokumenten Ordner der Anwendung zu generieren:

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

Denke, ich habe alles außer diesem versucht. Ich kann dir nicht genug danken! – Kyle

+0

Ich bin froh, dass ich helfen konnte! :) –

0

haben Sie versucht, den lokalen Dateipfad zu einer URL Umwandlung

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

wenn es Plätze sind in Sie Pfad-Datei, müssen Sie sie vor dem umwandeln müssen, um die Erstellung der URL

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

Die Core Data Vorlage wandelt einen Dateipfad in eine URL wie diese um:

NSURL *storeUrl = [NSURL fileURLWithPath:whatever]; 

Das scheint alles zu tun Der richtige Platz flieht und stopft, weil ich damit eine Datei mit einem Leerzeichen im Pfad lade.

+0

Dadurch liefert das gleiche Ergebnis wie meine orignal Frage. Wenn ich [NSData dataWithContentsOfURL: storeUrl] und NSLog das mache, bekomme ich eine riesige Liste von HEX-Nummern, so dass ich weiß, dass die Datei gefunden wird, oder die Daten wären null. Benötigt die Datei für MPMoviePlayer eine Erweiterung? – Kyle

+0

Haben Sie den Film getestet, um sicherzustellen, dass er abgespielt wird, wenn er in iTunes gezogen und synchronisiert wird? – Nimrod

+0

Der Film wurde in PhotoBooth erstellt und per E-Mail an das iPad gesendet. Der Film wurde als iPhone gespeichert, das mit Quicktime kompatibel ist und von der Fotorolle und auf dem Mac abgespielt wird. – Kyle

0

Ich bin mir nicht sicher, ob dir das weiterhilft. In diesem Tutorial gibt es einige Codezeilen, die wahrscheinlich werden Sie auf dem richtigen Weg bringen:

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

Sie diese Schnipsel in folgenden Verfahren finden:

- (void) moviePlayerLoadStateChanged:(NSNotification*)notification 

hier ist der Link zum Tutorial: Tutorial

Hoffentlich wird Ihnen helfen, ...

Verwandte Themen