2015-04-21 10 views
8

का उपयोग कर गैलरी से वीडियो अपलोड करें फोटो फ्रेमवर्क का उपयोग करके गैलरी से वीडियो अपलोड करने का सबसे अच्छा तरीका क्या है? इससे पहले कि मैं ALAssetRepresentation और अगले विधि का इस्तेमाल किया:फोटो फ्रेमवर्क

- (NSUInteger)getBytes:(uint8_t *)buffer fromOffset:(long long)offset length:(NSUInteger)length error:(NSError **)error; 
इस

एप्लिकेशन अस्थायी निर्देशिका करने के लिए पहले नकल इसके बिना फ़ाइल अपलोड करने की अनुमति दी। फोटो ढांचे में कोई विकल्प नहीं दिखता है। एक ही रास्ता AVAssetExportSession उपयोग करने के लिए लगता है -> स्थानीय निर्देशिका के लिए निर्यात -> अपलोड है, लेकिन इस अतिरिक्त संग्रहण स्थान

उत्तर

13

लगता ही मान्य तरीका PHImageManager से AVAsset अनुरोध करने के लिए है (एक समस्या, वीडियो है अगर बहुत बड़ा हो सकता है) की आवश्यकता है, और जांचें कि क्या लौटाई गई संपत्ति AVURLAsset है।

[[PHImageManager defaultManager] requestAVAssetForVideo:videoAsset options:nil resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) { 
    if ([asset isKindOfClass:[AVURLAsset class]]) { 
    NSURL *URL = [(AVURLAsset *)asset URL]; 
    // use URL to get file content 
    } 
}]; 

यह धीमी गति वीडियो के साथ काम नहीं करेगा, क्योंकि AVComposition बजाय AVURLAsset दिया जाता है: इस मामले में सीधे URL फ़ाइल का उपयोग और बाइट्स का हिस्सा हैं उसे प्राप्त करने के लिए इस्तेमाल किया जा सकता है।

PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init]; 
options.version = PHVideoRequestOptionsVersionOriginal; 

[[PHImageManager defaultManager] requestAVAssetForVideo:videoAsset options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) { 
    if ([asset isKindOfClass:[AVURLAsset class]]) { 
    NSURL *URL = [(AVURLAsset *)asset URL]; 
    // use URL to get file content 
    } 
}]; 

और पूर्ण आकार छवि यूआरएल पाने के लिए: संभव समाधान PHVideoRequestOptionsVersionOriginal वीडियो फ़ाइल संस्करण का उपयोग करने के लिए है

PHContentEditingInputRequestOptions *options = [[PHContentEditingInputRequestOptions alloc] init]; 
options.canHandleAdjustmentData = ^BOOL(PHAdjustmentData *adjustmentData) { 
    return YES; 
}; 

[imageAsset requestContentEditingInputWithOptions:options completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) { 
    // use contentEditingInput.fullSizeImageURL 
}]; 
+1

असली डिवाइस –

+0

तुलसी में काम नहीं, यह समाधान किसी भी समस्या के बिना हमारे लाइव अनुप्रयोग में प्रयोग किया जाता है। कृपया उस कोड का हिस्सा साझा करें जो अधिक जानकारी के लिए काम नहीं कर रहा है – f3n1kc

+0

मेरे मामले में, मैंने बड़े वीडियो को अपलोड करने के लिए इनपुट स्ट्रीम के रूप में यूआरएल का उपयोग करने की योजना बनाई थी। लेकिन असफल रहा, क्योंकि उस धारा का 'हैबसाइट्स उपलब्ध' नहीं है। – Benson

संबंधित मुद्दे