使用UIWebView查看大型(~1GB)文档,音频或视频文件

时间:2016-02-13 12:31:01

标签: ios objective-c uiwebview

UIWebView中查看大型(至少1gb )文档,音频和视频文件时出现问题。

我想问一下这些大文件有什么办法可以查看,因为普通的苹果设备只有1GB RAM,因此不应该能够查看大于此的文件(更不用说操作系统的内存消耗了)本身和其他背景任务)。

我可以在iPhone电影播放器​​中观看大型(~2gb)电影,但在使用webview时不能在我的应用中观看,所以我认为应该有办法做到这一点,但无法找到网页寻求建议。

有了它应该是可能的,所以有任何方法可以做到这一点,因为webview似乎无法 处理大文件 ,因为它肯定会 < em>内存不足

我需要能够将文件作为NSData传递,因为设备中的文件已加密,并且必须始终保持这种状态。

这是我显示音频/视频文件的方式:

NSString *contentType = [MIMETypeToFileExtViceVersaConverter convertFileExtensionToMimeType:shareWithObject.fileExtension];

NSString *base64String = [fileData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

NSString *str = [NSString stringWithFormat:@" \
                     <html><head></head><body style=\"margin:0;width:100%%;height:100%%;\">\
                     <video controls height=\"100%%\" width=\"100%%\"> \
                     <source type=\"%@\" src=\"data:%@;base64,%@\"> \
                     </video></body></html>", contentType, contentType, base64String];

[self.webView loadHTMLString:str baseURL:[[NSBundle mainBundle] resourceURL]];

这是针对文档文件的:

NSString *contentType = [MIMETypeToFileExtViceVersaConverter convertFileExtensionToMimeType:shareWithObject.fileExtension];

[self.webView loadData:fileData MIMEType:contentType textEncodingName:@"UTF-8" baseURL:[[NSBundle mainBundle] resourceURL]];

1 个答案:

答案 0 :(得分:0)

使用UIWebView的childMap.forEach((k,v) -> mainMap.computeIfPresent(k, (d,m) -> { m.keySet().removeAll(v); return m.isEmpty()? null: m; })); 功能时,这是不可能的。我们必须限制可以查看的文档大小,以防止与内存不足相关的崩溃。

希望将来有一个解决方案可以解决这个问题,我会将这个答案的答案奖励给这个问题的有效答案