2010-10-15 14 views
6

Estoy escribiendo una aplicación que almacena las películas en el rollo de fotos en la carpeta de documentos locales para la aplicación. Puedo reproducir películas remotas usando MPMoviePlayer, sin embargo, al tratar de reproducir una película almacenada en la carpeta de documentos para la aplicación siempre devuelve MPMovieLoadStateUnknown.MPMoviePlayer carga y reproduce películas guardadas en documentos de aplicaciones

Todas las notificaciones se envían y reciben desde el centro de notificaciones predeterminado (MPMoviePlayerLoadStateDidChangeNotification, MPMoviePlayerPlaybackDidFinishNotification). Aparece un cuadro de alerta poco después de recibir el mensaje loadStateUnknown en la consola, diciendo que la película no se pudo reproducir y que la aplicación recibe la notificación completa de reproducción de película.

Creo que puede ser un caso que el nombre del archivo (MPMoviePlayer solo puede tomar una URL como la ubicación del activo) no se puede encontrar. ¿Alguien ha tratado con este problema o similar?

Respuesta

1

Dado que ninguna de las otras respuestas parecen resolver el problema, me inclino a pensar que el problema podría ser con la ruta del archivo de documentos que está produciendo.

Debería utilizar el siguiente método para generar la ruta a la carpeta de documentos de la aplicación:

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

Creo que probé todo menos esto. No puedo agradecerle lo suficiente! – Kyle

+0

¡Me alegro de poder ayudar! :) –

0

¿Ha intentado convertir la ruta del archivo local a una url

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

si hay espacios en ruta a presentar, tendrá que convertirlos antes de crear la URL

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

El La plantilla de Datos básicos convierte una ruta de archivo a una URL como esta:

NSURL *storeUrl = [NSURL fileURLWithPath:whatever]; 

Eso parece hacer todo o f el espacio correcto que se escapa y esas cosas porque estoy usando esto para cargar un archivo con un espacio en la ruta.

+0

Hacer esto proporciona el mismo resultado que mi pregunta orignal. Si hago [NSData dataWithContentsOfURL: storeUrl] y NSLog eso obtengo una lista gigante de números HEX, entonces sé que es encontrar el archivo, o los datos serían nulos. ¿El archivo para MPMoviePlayer requiere una extensión? – Kyle

+0

¿Has probado la película para asegurarte de que se reproduce cuando se arrastra a iTunes y se sincroniza? – Nimrod

+0

La película se creó en PhotoBooth y se envió por correo electrónico al ipad. La película se guardó como iPhone compatible con Quicktime y se reproduce desde el rollo de fotos y en la Mac. – Kyle

0

No estoy seguro si esto lo ayudará. En este tutorial hay algunas líneas de código que probablemente le llevarán por el camino correcto:

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

encontrará este fragmento en el siguiente método:

- (void) moviePlayerLoadStateChanged:(NSNotification*)notification 

aquí está el enlace al tutorial: Tutorial

Esperemos que esto le ayudará a ...

Cuestiones relacionadas