2012-04-26 22 views
6

Tại sao các video được chọn có cài đặt chất lượng video cao và trung bình UIImagePickerController có cùng thuộc tính video giống nhau, ít nhất là trên các thiết bị như iPhone4 và iPad3?Tại sao video được chọn qua cài đặt cao và trung bình của UIImagePickerController có thể dẫn đến các thuộc tính chất lượng giống nhau trên kết quả?

chi tiết:

Chúng tôi đang sử dụng UIImagePickerController để cho người dùng ứng dụng của chúng tôi chọn hình ảnh hoặc video từ thư viện ảnh và sau đó chuyển họ lên máy chủ của họ. Chúng tôi cho phép người dùng chọn chất lượng video cao, trung bình hoặc thấp mà chúng tôi ánh xạ trực tiếp đến các hằng số UIImagePickerControllerQualityTypeHigh, UIImagePickerControllerQualityTypeMedium và UIImagePickerControllerQualityTypeLow videoQuality.

Khi một giây 10 hoặc lâu hơn video, bắn bên ngoài của ứng dụng của chúng tôi với máy ảnh, được chọn và gửi vào 3GS (iOS 5.0) chúng ta thấy một sự khác biệt rõ rệt với mỗi cài đặt chất lượng, ví dụ:

  • thấp: 226KB tại 144x192, codec: AAC H.264
  • trung: 1.1MB tại 360x480, codec: AAC H.264
  • cao: 5MB ở 480x640, codec: AAC H.264

Khi chúng tôi thử tương tự trên iPhone4 hoặc iPad3 (w e xảy ra để có những thiết bị tiện dụng; không chắc chắn nó chỉ xảy ra trên các thiết bị đó), chúng tôi thấy rằng cài đặt thấp tạo ra kết quả tương đối thấp, nhưng cài đặt cao và trung bình cho chúng ta kết quả tương tự, như sau:

  • low: 194KB at 144x192, codec: AAC H.264
  • trung: 2.87MB tại 720x1280, codec: AAC H.264
  • cao: 2.87MB tại 720x1280, codec: AAC H.264

(Lưu ý rằng kết quả trung bình và cao giống hệt nhau.)

Bản gốc từ thiết bị là 12,8 MB ở độ phân giải 720x1280, codec: AAC H.264 với tốc độ bit cao hơn.

Có thể giải thích điều gì đang xảy ra ở đây không? Tôi muốn có thể giải thích nó cho khách hàng của chúng tôi, thậm chí tốt hơn chỉ vào một cái gì đó trong tài liệu của Apple bao gồm điều này.

Cảm ơn bạn đã giúp đỡ ...

Trả lời

5

Cài đặt chất lượng video chỉ áp dụng khi quay video và không chọn chúng từ bộ chọn video. Cài đặt được liệt kê rõ ràng trong phần cài đặt chụp bên dưới.

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImagePickerController_Class/UIImagePickerController/UIImagePickerController.html

Bạn có thể sử dụng mã bên dưới để xuất video ở dạng ban đầu. Chỉ cần chuyển giá trị URL của video đã chọn và hàm sẽ trả về đường dẫn cho video đã xuất.

+(NSString*) videoAssetURLToTempFile:(NSURL*)url 
{ 
    NSString * surl = [url absoluteString]; 
    NSString * ext = [surl substringFromIndex:[surl rangeOfString:@"ext="].location + 4]; 
    NSTimeInterval ti = [[NSDate date]timeIntervalSinceReferenceDate]; 
    NSString * filename = [NSString stringWithFormat: @"%f.%@",ti,ext]; 
    NSString * tmpfile = [NSTemporaryDirectory() stringByAppendingPathComponent:filename]; 

    NSURL *outputURL = [NSURL fileURLWithPath:tmpfile]; 

    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil]; 
    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality]; 
    exportSession.outputURL = outputURL; 
    exportSession.shouldOptimizeForNetworkUse = YES; 
    exportSession.outputFileType = AVFileTypeQuickTimeMovie; 
    [exportSession exportAsynchronouslyWithCompletionHandler:^(void) 
    { 
     NSLog(@"Export Complete %d %@ %@", exportSession.status, exportSession.error, outputURL); 
     [exportSession release]; 
    }]; 

    return tmpfile; 
} 
+1

Tiện ích phải được lấy bằng [[url lastPathComponent] pathExtension]; – LightMan

+3

Cài đặt videoQuality được liệt kê trong cài đặt chụp, nhưng tài liệu cho biết: "Nó cũng được sử dụng bất cứ khi nào chọn phim đã ghi". –

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