首页 文章

UIWebView加载本地视频数据

提问于
浏览
6

我正在尝试在UIWebView中加载视频 . 视频存储在本地文件系统中 . 这是我用于加载视频的代码段 .

{
   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];
}

这是我在控制台中遇到的错误:

Webview加载错误:错误Domain = WebKitErrorDomain Code = 204“Plug-in handling load”UserInfo = 0x1f8b3c70 {NSErrorFailingURLStringKey = applewebdata:// 3F0047AD-E6CF-4EAD-A4C3-DA6E1C0BD603,WebKitErrorMIMETypeKey = video / x-m4v,NSErrorFailingURLKey = applewebdata:// 3F0047AD-E6CF-4EAD-A4C3-DA6E1C0BD603,NSLocalizedDescription =插件处理负载}

但是,相同的代码适用于加载所有其他文件类型,例如:PNG,DOC等 .

请帮忙...!!!

2 回答

  • 1

    您应尽可能使用 MPMoviePlayerController - (Documentation)加载本地视频和其他视频 - 如果您正在播放视频,那么您正在开发本机应用 .

  • 5

    您需要将数据转换为base64字符串,并使用带有 video 标记的Safari的HTML功能

    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];
    

    这里 data 是您的原始视频数据, contentType 是contentType字符串 .

相关问题