2014-01-07 3 views
0

Получение предупреждения «Память полученной памяти» при получении формы миниатюр MPMoviePlayerController и приложение разбилось.Предупреждение о получении памяти при использовании MPMoviePlayerController

Я использую код:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ 

    for (int i = 0; i < pickedVideoAssetDuration; i ++){ 

     UIImage *singleFrameImage = [movie thumbnailImageAtTime:i timeOption:MPMovieTimeOptionExact]; 
     CGSize newSize = CGSizeMake(50, 50); 
     // checks whether the thumbnails are properly extracted or not 
     UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0f); 
     [singleFrameImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 

     UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
     NSLog(@"newSize >60 : %@", NSStringFromCGSize(newImage.size)); 
     UIGraphicsEndImageContext(); 

     // checks whether the thumbnails are properly extracted or not 
     if(newImage) 
      [durationArray addObject:newImage]; 
     else 
      NSLog(@"nil thumbnail"); 

     dispatch_async(dispatch_get_main_queue(), ^{ 
          [self designthumbScroll:thumbImageCount]; 
         }); 
    }} 

будет признателен, если любая помощь :)

+0

пожалуйста, поставить предупреждение здесь .. – iPatel

+0

«Полученное предупреждение памяти» –

ответ

0

Видео дороги, чтобы загрузить в память в целом.

Может быть, попробуйте добавить @autoreleasepool к внутренней части петли немного быстрее освободить память:

for (int i = 0; i < pickedVideoAssetDuration; i ++) 
{ 
    @autoreleasepool{ 
     // your existing code 
    } 
} 

В противном случае, смотреть на остальной части кода и посмотреть, что память можно отпустить в то время.

+0

Спасибо за Ваш ответ. Он работал для малого цикла, например: от 1 до 60, длинный цикл не работает. Есть одно предупреждение. –

+0

Если это так, возможно, разбить его на ряд небольших циклов? – zadr

0

Попытка получить эскизы по

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *newPath = [documentsDirectory stringByAppendingPathComponent:@"YourVideoFileName"]; 

    UIImage * thumbnailImg = [self getThumbNail:newPath]; 

И метод кода

-(UIImage *)getThumbNail:(NSString *)stringPath 
{ 
    NSURL *videoURL = [NSURL fileURLWithPath:stringPath]; 
    MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 
    UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame]; 

    [player stop]; 
    return thumbnail; 
} 
Смежные вопросы