मैं एक वीडियो गैलरी बनाने की कोशिश कर रहा हूं।AVAssetImageGenerator प्रदर्शन समस्या
वीडियो प्रदर्शित करने के लिए मैं UICollectionView
का उपयोग कर रहा हूं। प्रत्येक UICollectionViewCell
में वीडियो थंबनेल वाला पृष्ठभूमि है।
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:url options:nil];
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
generator.appliesPreferredTrackTransform = YES;
CMTime time = CMTimeMakeWithSeconds(0,15);
AVAssetImageGeneratorCompletionHandler handler = ^(CMTime timeRequested, CGImageRef image, CMTime timeActual, AVAssetImageGeneratorResult result, NSError *error)
{
NSLog(@"handler^()");
if (result == AVAssetImageGeneratorSucceeded)
{
thumbnail = [UIImage imageWithCGImage: image];
success(thumbnail);
}
else
{
failure(error);
}
};
CGSize maximumSize = CGSizeMake(CLIPBOARD_COLLECTION_VIEW_CELL_WIDTH, CLIPBOARD_COLLECTION_VIEW_CELL_HEIGHT);
generator.maximumSize = maximumSize;
NSLog(@"generateCGImagesAsynchronouslyForTimes:");
[generator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:time]] completionHandler:handler];
मैं देखा है कि generateCGImagesAsynchronouslyForTimes
पूरी तरह से एसिंक्रोनस रूप से काम नहीं करता है: एक वीडियो थंबनेल मैं तर्क के साथ एक विधि का उपयोग कर रहा उत्पन्न करने के लिए। इस विधि कॉल के बीच एक समय स्थान है। जब मैं तालिका दृश्य कक्ष लोड कर रहा हूं, तो यह एक बड़ा अंतराल का कारण बनता है। अगर मैं [generator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:time]] completionHandler:handler]
पर टिप्पणी करता हूं तो कोई दृश्यमान अंतराल नहीं है (न ही छवियां)।
मैं इस प्रदर्शन समस्या को कैसे हल कर सकता हूं?
क्या आप निर्दिष्ट कर सकते हैं कि वास्तव में क्या है? क्या स्क्रॉलिंग प्रदर्शन पीड़ित है या क्या अनुरोध के बीच और लंबे समय तक हैंडलर कहलाता है? क्या आप टाइम प्रोफाइलर उपकरण के परिणाम जोड़ सकते हैं? – jszumski
'GenerCGImagesAsynchronouslyForTimes' कॉल के बीच समय रिक्त स्थान हैं ... –
@TomKortney क्या आपको कोई समाधान मिला? एक ही समस्या का सामना करना पड़ रहा है – Sam