2012-10-12 307 views
6

Estoy intentando cargar un video en UIWebView. El video se almacena en el sistema de archivos local. Aquí está el fragmento de código que estoy usando para cargar el video.UIWebView cargar datos de video locales

{ 
    NSString* filePAth = [[NSBundle mainBundle] pathForResource:@"sample_iPod" ofType:@"m4v"]; 
    NSLog(@"%@",filePAth); 
    NSData* data = [NSData dataWithContentsOfFile:filePAth]; 
    [_webView loadData:data MIMEType:@"video/x-m4v" textEncodingName:@"UTF-8" baseURL:nil]; 
} 

Este es el error que consigo en la consola:

error en la carga de vista Web: Error de dominio = Código WebKitErrorDomain = 204 "plug-in de carga manejado" UserInfo = 0x1f8b3c70 {NSErrorFailingURLStringKey = applewebdata : // 3F0047AD-E6CF-4EAD-A4C3-DA6E1C0BD603, WebKitErrorMIMETypeKey = video/x-m4v, NSErrorFailingURLKey = applewebdata: // 3F0047AD-E6CF-4EAD-A4C3-DA6E1C0BD603, NSLocalizedDescription = Plug-in carga manejado}

Sin embargo, el mismo código funciona para cargar todo el otro tipo de archivo, por ejemplo: PNG, DOC et.c.

Por favor ayuda ... !!!

+1

¿Por qué le gustaría usar WebView para reproducir un archivo de video ubicado en el dispositivo? MPMoviePlayerViewController es mucho más simple, utiliza menos memoria y está hecho para colocar esto. Recuerde que WebView no es Safari. –

+3

Gracias por la respuesta, pero necesito cargar el video en UIWebview porque estoy cargando diferentes formatos de archivo en esa vista. –

Respuesta

5

Debe cargar videos locales y otros videos siempre que sea posible con MPMoviePlayerController - (Documentation) - Si reproducir el video es todo lo que necesita y desea y está desarrollando una aplicación nativa.

+0

Gracias por la respuesta, pero necesito cargar el video en UIWebview porque estoy cargando diferentes formatos de archivo en esa vista. –

+1

Puede tener un MPMoviePlayerController oculto del mismo tamaño, y si el usuario selecciona un video, muestra el reproductor y reproduce, si el usuario selecciona una imagen, detiene el video y lo oculta. Hice esto en la aplicación WGSN - https://itunes.apple.com/gb/app/wgsn-365/id550174392?mt=8 - echa un vistazo a la captura de pantalla # 3 es un visor de contenido con pdf/imágenes como viables a través de webview y video a través de MPMoviePlayerController establecido en la parte superior – Daniel

+1

MPMoviePlayerController funcionó perfectamente para mí ... !!! –

1

es necesario convertir sus datos de cadena de base 64 y la capacidad de utilizar HTML de Safari con video etiqueta

NSString *base64String = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; 

NSString *str = [NSString stringWithFormat:@" \ 
        <div style=\"height:100%%;\"> \ 
        <p style=\"position: absolute; top: 50%%; left: 50%%; transform: translate(-50%%, -50%%)\"> \ 
        <video controls> \ 
        <source type=\"%@\" src=\"data:%@;base64,%@\"> \ 
        </video></p></div>", contentType, contentType, base64String]; 

[webView loadHTMLString:str baseURL:nil]; 

Aquí es data los datos de vídeo en bruto, es contentType cadena contentType.

+0

No funciona para mí – jose920405

+0

Tengo problemas de memoria de esta manera –

+0

@BryanPosas, es inevitable para videos muy grandes, porque cargo todos los datos de archivos en la memoria. Pero parece que es la única forma de manejar datos de video en webView. – malex

Cuestiones relacionadas