2014-04-16 8 views
5

मेरे पास जो समस्या है, वह वीडियो से 20 छवियों को लोड कर रही है। जितना अधिक थंबनेल मैं प्राप्त करना चाहता हूं, उतना ही मुझे इंतजार करना होगा। जिस विधि का मैं उपयोग करता हूं वह उत्पन्न होता है CGImagesAsynchronouslyForTimes। क्या किसी को पता है कि मुझे यह समस्या क्यों है?आईओएस - जेनरेट सीजीआईमेजएसिंक्रोनिसफोरटाइम्स बहुत लंबा ले रहा है

AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset]; 
generator.appliesPreferredTrackTransform = YES; 
generator.requestedTimeToleranceAfter = kCMTimeZero; 
generator.requestedTimeToleranceBefore = kCMTimeZero; 
CGSize maxSize = CGSizeMake(320, 180); 
generator.maximumSize = maxSize; 
AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){ 

    if (result != AVAssetImageGeneratorSucceeded) { 
     NSLog(@"couldn't generate thumbnail, error:%@", error); 
    } 

    UIImage *frameImage = [UIImage imageWithCGImage:im]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [_frameImageView setImage:frameImage]; 
    }); 
}; 
[generator generateCGImagesAsynchronouslyForTimes:timeArray completionHandler:handler]; 
+1

मुझे एक ही समस्या है, क्या आपको कोई समाधान मिला है? –

+0

@ScorpianAlive एक ही समस्या का सामना कर रहा है, क्या आपको कोई समाधान मिला? – Sam

उत्तर

0

मुझे आपके मुद्दे पता हैं।

थंबनेल जेनरेट करने में बहुत समय लगता है क्योंकि आपने अनुरोध किया है TimeToleranceAfter और अनुरोध किया TimeToleranceBefore kCMTimeZero हैं।

लांग उत्तर: आप विशिष्ट TimeTolerance, यह प्रदर्शन परिशुद्धता के बजाय के लिए चालू कर दिया जाएगा तो। अगर आप सिर्फ थंबनेल वीडियो करना चाहते हैं, तो आपको हाइट परिशुद्धता के साथ थंबनेल जेनरेट करने की आवश्यकता नहीं है।

यह सहिष्णुता के साथ seekToTime के समान है। https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html#//apple_ref/doc/uid/TP40010188-CH3-SW3 से संदर्भ, अनुभाग खोजना-प्लेहेड को पुनर्स्थापित करना।

संक्षिप्त उत्तर: बस अनुरोध किया गया TimeToleranceAfter और अनुरोध TimeTolerance पहले।

+1

यह उत्तर मेरे लिए काम नहीं करता है। –

+1

@ सलमानखक्कानी यह उत्तर मेरे लिए काम नहीं करता है और न ही – Sam

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