2012-10-12 32 views
6

Tôi đang cố tải một Video trong UIWebView. Video được lưu trữ trong hệ thống tệp cục bộ. Đây là đoạn mã tôi đang sử dụng để tải video.UIWebView tải dữ liệu video cục bộ

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

Đây là lỗi tôi nhận được trong giao diện điều khiển:

Lỗi trong nạp Webview: Lỗi miền = WebKitErrorDomain Mã = 204 "Plug-in tải xử lý" UserInfo = 0x1f8b3c70 {NSErrorFailingURLStringKey = applewebdata : // 3F0047AD-E6CF-4EAD-A4C3-DA6E1C0BD603, WebKitErrorMIMETypeKey = video/x-m4v, NSErrorFailingURLKey = applewebdata: // 3F0047AD-E6CF-4EAD-A4C3-DA6E1C0BD603, NSLocalizedDescription = plug-in tải xử lý}

Tuy nhiên, cùng một mã hoạt động để tải tất cả các loại tệp khác ví dụ: PNG, DOC et.c.

Xin hãy giúp ... !!!

+1

Tại sao bạn muốn sử dụng WebView để phát tệp video nằm trên thiết bị? MPMoviePlayerViewController đơn giản hơn nhiều, sử dụng ít bộ nhớ hơn và được thực hiện để đặt nó. Hãy nhớ rằng WebView không phải là Safari. –

+3

Cảm ơn bạn đã trả lời, nhưng tôi cần tải video trong UIWebview vì tôi đang tải các định dạng tệp khác nhau trong chế độ xem đó. –

Trả lời

5

Bạn nên tải video địa phương và các video khác bất cứ khi nào có thể với MPMoviePlayerController - (Documentation) - Nếu phát video là tất cả những gì bạn cần và muốn và bạn đang phát triển một ứng dụng gốc.

+0

Cảm ơn bạn đã trả lời, nhưng tôi cần tải video trong UIWebview vì tôi đang tải các định dạng tệp khác nhau trong chế độ xem đó. –

+1

Bạn có thể có một MPMoviePlayerController ẩn có cùng kích thước và nếu người dùng chọn một video, bạn sẽ hiển thị trình phát và phát, nếu người dùng chọn một hình ảnh, bạn dừng video và ẩn nó. Tôi đã làm điều này trong ứng dụng WGSN - https://itunes.apple.com/gb/app/wgsn-365/id550174392?mt=8 - hãy xem ảnh chụp màn hình # 3 đó là trình xem nội dung có pdf/hình ảnh là khả thi qua webview và video thông qua một MPMoviePlayerController đặt trên đầu trang – Daniel

+1

MPMoviePlayerController làm việc ra hoàn hảo cho tôi ... !!! –

1

Bạn cần phải chuyển đổi dữ liệu sang chuỗi base64 và sử dụng khả năng HTML của Safari với video thẻ

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

Đây data là dữ liệu video thô của bạn, contentType là contentType chuỗi.

+0

Nó không hoạt động với tôi – jose920405

+0

Tôi đang gặp vấn đề về bộ nhớ theo cách này –

+0

@BryanPosas, không thể tránh khỏi video rất lớn vì tôi tải tất cả dữ liệu tệp vào bộ nhớ. Nhưng có vẻ như đó là cách duy nhất để xử lý dữ liệu video trong webView. – malex

Các vấn đề liên quan