2010-10-15 19 views
6

Sto scrivendo un'applicazione che memorizza i filmati nel rotolo di foto nella cartella documenti locale per l'app. Posso riprodurre filmati remoti usando MPMoviePlayer, tuttavia provare a riprodurre un film memorizzato nella cartella documenti per l'app restituisce sempre MPMovieLoadStateUnknown.MPMoviePlayer carica e riproduce i filmati salvati nei documenti di app

Le notifiche vengono tutte inviate e ricevute dal centro notifiche predefinito (MPMoviePlayerLoadStateDidChangeNotification, MPMoviePlayerPlaybackDidFinishNotification). Una finestra di avviso compare poco dopo aver ricevuto il messaggio loadStateUnknown nella console, dicendo che il filmato non può essere riprodotto e che l'app riceve la notifica di riproduzione del film completato.

Penso che possa essere un caso che il nome del file (MPMoviePlayer non può che prendere un URL come posizione della risorsa) non può essere trovato. Qualcuno ha affrontato questo problema o simili?

risposta

1

Dato che nessuna delle altre risposte sembra di risolvere il problema, sono propenso a pensare che il problema potrebbe essere con il percorso del file Documenti che stai producendo.

Si deve usare il seguente metodo per generare il percorso della cartella documenti dell'applicazione:

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

Penso di aver provato tutto tranne questo. Non posso ringraziarti abbastanza! – Kyle

+0

Contento di aver potuto aiutare! :) –

0

Hai provato la conversione del percorso di file locale in un URL

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

se ci sono spazi in si file percorso, sarà necessario convertirli prima di creare l'URL

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

Il Il modello Core Data converte un percorso file in un URL come questo:

NSURL *storeUrl = [NSURL fileURLWithPath:whatever]; 

Che sembra fare tutto o f lo spazio di escape corretto e roba perché sto usando questo per caricare un file con uno spazio nel percorso.

+0

In questo modo fornisce lo stesso risultato della mia domanda orignal. Se faccio [NSData dataWithContentsOfURL: storeUrl] e NSLog ho una lista gigante di numeri esadecimali, quindi so che è trovare il file, altrimenti i dati sarebbero nulli. Il file per MPMoviePlayer richiede un'estensione? – Kyle

+0

Hai testato il film per assicurarti che venga riprodotto quando viene trascinato in iTunes e sincronizzato? – Nimrod

+0

Il film è stato creato in PhotoBooth e inviato via email all'iPad. Il film è stato salvato come compatibile con iPhone Quicktime e riproduce dal rotolo di foto e sul Mac. – Kyle

0

Non sono sicuro che questo possa essere d'aiuto. In questo tutorial ci sono alcune righe di codice che probabilmente vi porterà sulla strada giusta:

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

troverete questo frammento nel seguente metodo:

- (void) moviePlayerLoadStateChanged:(NSNotification*)notification 

ecco il link al tutorial: Tutorial

Speriamo che questo vi aiuterà a ...

Problemi correlati