2010-07-01 42 views
17

Tôi đang sử dụng UIImagePickerController để cho phép người dùng của tôi chọn video từ thư viện nội dung.Tránh nén video khi chọn phim bằng UIImagePickerController?

Khi người dùng chọn nút "Chọn" trên màn hình thứ hai, chế độ xem sẽ hiển thị thanh tiến trình và thông báo "Nén video ...".

Tại sao điều này lại xảy ra?

Có cách nào tôi có thể tránh hoạt động nén này không?

+0

Vẫn chưa tìm thấy một giải pháp cho việc này. Ai có ý tưởng gì không? – Avalanchis

+0

Hãy xem các câu trả lời của tôi bên dưới.Nó không giống như các nhà phát triển có thể ảnh hưởng đến nén. – memmons

+1

Avalanchis - điều này đã được trả lời 2 năm trước. Có thể nhận được chấp nhận không? – memmons

Trả lời

16

Trả lời: Hiện tại chưa có cách nào để kiểm soát cách UIImagePickerController nén video nhặt.

Tôi vừa thực hiện một số kiểm tra nhanh. Sử dụng ứng dụng thử nghiệm tôi đã tạo, tôi đã chọn cùng một video hai lần - một lần với thuộc tính videoQuality được đặt thành UIImagePickerControllerQualityTypeHigh và một lần với nó được đặt thành UIImagePickerControllerQualityTypeLow. Các tệp kết quả được sao chép chính xác có cùng kích thước, 15,1MB với kích thước khung là 360x480. Bản gốc là 72.5MB với kích thước khung hình là 480x640. Rõ ràng tài sản này không ảnh hưởng đến việc nén sử dụng ở tất cả.

+0

Có tin tức gì về điều này không? Sẽ thực sự đánh giá cao rằng người dùng không phải đợi hộp thoại "nén" khi chọn video được tải lên. –

+0

Tôi đồng ý. Đặt cược tốt nhất của bạn là gửi một radar với Apple. – memmons

+0

Cũng đã một năm sau và không có gì thay đổi - iOS 6 vẫn không cho phép nhập URL truyền thông trực tiếp: ( – KPK

4

Đặt videoQuality tài sản của UIImagePickerController để "Cao" (UIImagePickerControllerQualityTypeHigh = 0)

Từ các tài liệu SDK: "Nếu hiển thị một bộ phim được ghi lại trong bảng chọn hình ảnh, xác định rằng bạn không muốn giảm chất lượng video của bộ phim. "

http://developer.apple.com/iphone/library/documentation/uikit/reference/UIImagePickerController_Class/UIImagePickerController/UIImagePickerController.html#//apple_ref/doc/c_ref/UIImagePickerControllerQualityType

+0

Hình như trên iPhone 4 nó vẫn sẽ nén ngay cả khi được đặt thành "Cao" nhưng chất lượng tốt hơn nhiều thì giá trị mặc định. Tôi có thể thấy lý do tại sao họ sẽ nén ở "Cao" kể từ khi video 720p ban đầu được mã hóa ở mức cao hơn 10 Mbit/giây! – CDeutsch

+0

Tôi có những phát hiện tương tự, thậm chí đặt nó thành kết quả Cao trong một số nén (và hộp thoại 'Nén Video'). – Shizam

+0

Trong tài liệu cho 'UIImagePickerControllerQualityTypeHigh' dòng cuối cùng cho biết:" ** Nếu hiển thị phim đã ghi trong bộ chọn hình ảnh, hãy chỉ định rằng bạn không muốn giảm chất lượng video của phim. ** ". Điều này dường như chỉ ra rằng để chọn video (thay vì ghi), thuộc tính này ảnh hưởng đến cách chúng được hiển thị trong màn hình chỉnh sửa của trình chọn hình ảnh. – memmons

0

Đối với những người đưa ra lời khuyên sử dụng thuộc tính videoQuality, tài liệu nêu rõ rằng đó là tùy chọn quay video, không phải tùy chọn bộ chọn.

Khi Jack đề cập đến nó bên dưới, nó cũng là để chuyển mã. Có vẻ như tôi đã đọc tài liệu quá nhanh vì tôi không nhận thấy đề cập chuyển mã.

+1

Tài liệu cho biết "Ghi video ** và chất lượng chuyển mã **." –

3

Vì không có cách nào để tránh nén bằng UIImagePickerController, tôi muốn bao gồm một số ý tưởng về cách bạn có thể tạo bộ chọn hình ảnh của riêng mình để tránh nén.

này sẽ cho phép truy cập vào các tập tin video thô:

iOS 8

PHFetchResult *assetsFetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo options:nil]; 
for (PHAsset *asset in assetsFetchResult) { 
    PHVideoRequestOptions *videoRequestOptions = [[PHVideoRequestOptions alloc] init]; 
    videoRequestOptions.version = PHVideoRequestOptionsVersionOriginal; 

    [[PHImageManager defaultManager] requestAVAssetForVideo:asset options:videoRequestOptions resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) { 
     // the AVAsset object represents the original video file 
    }]; 
} 

Nhìn vào tài liệu PhotoKit để truy cập vào bộ sưu tập (khoảnh khắc) và các tùy chọn khác.

Đây là một ứng dụng mẫu từ Apple sử dụng PhotoKit có thể được sửa đổi để trở thành một chọn ảnh: https://developer.apple.com/library/ios/samplecode/UsingPhotosFramework/Introduction/Intro.html

Đây là một thư viện chọn ảnh trên GitHub có sử dụng PhotoKit trông đầy hứa hẹn vì nó cung cấp cho bạn các đối tượng PHAsset cho tất cả các hình ảnh/video được chọn: https://github.com/guillermomuntaner/GMImagePicker

iOS 7 và dưới

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 

[library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) { 
    if (group) { 
     // If you want, you can filter just pictures or videos 
     // I just need videos so I do this: 
     [group setAssetsFilter:[ALAssetsFilter allVideos]]; 

     [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop){ 
      if (asset){ 
       // You can now add this ALAsset in your own video picker. 
       // Note that you can only access the ALAsset as long as 
       // you maintain a reference to the ALAssetsLibrary 

       // Or if you want to process the video, you can create an AVAsset: 
       NSURL *url = asset.defaultRepresentation.url; 
       AVAsset *videoAsset = [AVAsset assetWithURL:url]; 
      } 
     }]; 
    } 
} failureBlock:^(NSError *error) { 
    NSLog(@"error enumerating AssetLibrary groups %@\n", error); 
}]; 
Các vấn đề liên quan