2010-07-01 22 views
17

मैं अपने उपयोगकर्ता को संपत्ति लाइब्रेरी से वीडियो चुनने की अनुमति देने के लिए UIImagePickerController का उपयोग कर रहा हूं।वीडियो संपीड़न से बचें?

जब उपयोगकर्ता दूसरी स्क्रीन पर "चुनें" बटन का चयन करता है, तो दृश्य एक प्रगति पट्टी और "वीडियो संपीड़ित ..." संदेश प्रदर्शित करता है।

ऐसा क्यों हो रहा है?

क्या कोई तरीका है कि मैं इस संपीड़न ऑपरेशन से बच सकता हूं?

+0

अभी भी इस के लिए एक समाधान नहीं मिला है। क्या किसी के भी पास कोई सुझाव है? – Avalanchis

+0

नीचे दिए गए मेरे उत्तरों पर एक नज़र डालें।ऐसा लगता है कि डेवलपर्स संपीड़न को प्रभावित कर सकते हैं। – memmons

+1

Avalanchis - यह 2 साल पहले उत्तर दिया गया था। स्वीकार करने के लिए संभव है? – memmons

उत्तर

16

उत्तर: वर्तमान में कैसे UIImagePickerController उठाया वीडियो को संपीड़ित नियंत्रित करने के लिए कोई तरीका नहीं है।

मैंने अभी कुछ त्वरित परीक्षण किए हैं। मैंने बनाए गए टेस्ट ऐप का उपयोग करके, मैंने दो बार एक ही वीडियो चुना - एक बार videoQuality संपत्ति UIImagePickerControllerQualityTypeHigh पर सेट हो गई और एक बार यह UIImagePickerControllerQualityTypeLow पर सेट हो गई। परिणामी फाइलों की प्रतिलिपि बनाई गई थी, बिल्कुल 360x480 के फ्रेम आकार के साथ 15.1 एमबी समान आकार के समान आकार हैं। मूल 480x640 के फ्रेम आकार के साथ 72.5 एमबी था। स्पष्ट रूप से यह संपत्ति संपीड़न को बिल्कुल प्रभावित नहीं करती है।

+0

क्या इस बारे में कोई खबर है? वास्तव में सराहना करेंगे कि उपयोगकर्ताओं को अपलोड करने के लिए वीडियो चुनते समय "संपीड़न" संवाद की प्रतीक्षा नहीं करनी पड़ेगी। –

+0

मैं सहमत हूं। ऐप्पल के साथ रडार फाइल करना आपकी सबसे अच्छी शर्त है। – memmons

+0

वैसे यह एक साल बाद है और कुछ भी नहीं बदला है - आईओएस 6 अभी भी सीधे मीडिया यूआरएल आयात करने की अनुमति नहीं देता है :( – KPK

4

सेट UIImagePickerController की videoQuality संपत्ति के लिए "उच्च" (UIImagePickerControllerQualityTypeHigh = 0)

SDK दस्तावेज़ से: "अगर चित्र पिकर में दर्ज की गई फिल्म को प्रदर्शित करने, निर्दिष्ट करता है तुम नहीं है कि फिल्म की वीडियो गुणवत्ता को कम करना चाहते हैं। "

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

+0

आईफोन 4 की तरह दिखता है यह अभी भी "उच्च" पर सेट होने पर भी संपीड़ित होगा लेकिन गुणवत्ता डिफ़ॉल्ट रूप से बेहतर है। मैं देख सकता हूं कि क्यों वे "उच्च" पर संपीड़ित होंगे क्योंकि मूल 720 पी वीडियो 10 एमबी/सेकेंड पर एन्कोड किया गया है! – CDeutsch

+0

मेरे पास समान निष्कर्ष हैं, यहां तक ​​कि इसे कुछ संपीड़न (और 'संपीड़न वीडियो' संवाद) में उच्च परिणामों तक सेट करना भी है। – Shizam

+0

'UIImagePickerControllerQualityTypeHigh' के दस्तावेज़ों में अंतिम पंक्ति कहती है: "** यदि छवि पिकर में एक रिकॉर्ड की गई फिल्म प्रदर्शित करना, यह निर्दिष्ट करता है कि आप फिल्म की वीडियो गुणवत्ता को कम नहीं करना चाहते हैं। **"। ऐसा लगता है कि वीडियो चुनने (रिकॉर्डिंग के बजाए) इस संपत्ति को प्रभावित करता है कि वे छवि पिकर की संपादन स्क्रीन में कैसे प्रदर्शित होते हैं। – memmons

0

वीडियो गुणवत्ता गुण का उपयोग करने के लिए सलाह देने वाले लोगों के लिए, दस्तावेज़ीकरण स्पष्ट रूप से बता रहा है कि यह एक वीडियो कैप्चर विकल्प है, न कि एक पिकर विकल्प।

जैसे जैक नीचे इसका उल्लेख कर रहा है, यह ट्रांसकोडिंग के लिए भी है। ऐसा लगता है कि मैंने डॉक्टर को बहुत जल्दी पढ़ा क्योंकि मैंने ट्रांसकोडिंग उल्लेख को नोटिस नहीं किया था।

+1

दस्तावेज कहता है "वीडियो रिकॉर्डिंग ** और ट्रांसकोडिंग गुणवत्ता **।" –

3

चूंकि UIImagePickerController का उपयोग करके संपीड़न से बचने के लिए अभी तक कोई रास्ता नहीं है, इसलिए मैं कुछ विचारों को शामिल करना चाहता हूं कि आप अपना खुद का छवि पिकर कैसे बना सकते हैं जो संपीड़न से बचें।

आईओएस संग्रह (क्षणों) और अन्य विकल्पों तक पहुँचने के लिए PhotoKit प्रलेखन पर 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 
    }]; 
} 

देखो:

यह कच्चे वीडियो फ़ाइलों के लिए उपयोग की अनुमति देगा। https://developer.apple.com/library/ios/samplecode/UsingPhotosFramework/Introduction/Intro.html

यहाँ PhotoKit कि होनहार लग रहा है, क्योंकि यह आप के लिए PHAsset वस्तुओं देता है का उपयोग करता है GitHub पर एक फ़ोटो पिकर पुस्तकालय है:

यहां नमूने PhotoKit का उपयोग कर कि एक फ़ोटो पिकर होने के लिए संशोधित किया जा सकता है एप्पल से अनुप्रयोग है सभी चयनित छवियों/वीडियो: https://github.com/guillermomuntaner/GMImagePicker

iOS 7 और

नीचे
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); 
}]; 
संबंधित मुद्दे