title: Creating Thumbnail from Video - Improving Speed Performance - AVAsset - iPhone
body: <p>I am using code based on the code in the following thread to generate a video thumbnail :</p>
  
  <p><a href="https://stackoverflow.com/questions/1347562/getting-thumbnail-from-a-video-url-or-data-in-iphone-sdk">Getting a thumbnail from a video url or data in iPhone SDK</a></p>
  
  <p>My code is as follows :</p>
  
  <pre><code>if (selectionType == kUserSelectedMedia) {
  
      NSURL * assetURL = [info objectForKey:UIImagePickerControllerReferenceURL];
  
      AVURLAsset *asset=[[AVURLAsset alloc] initWithURL:assetURL options:nil];
      AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
      generator.appliesPreferredTrackTransform=TRUE;
      [asset release];
      CMTime thumbTime = CMTimeMakeWithSeconds(0,30);
  
      //NSLog(@"Starting Async Queue");
  
      AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){
          if (result != AVAssetImageGeneratorSucceeded) {
              NSLog(@"couldn't generate thumbnail, error:%@", error);
          }
  
          //NSLog(@"Updating UI");
  
          selectMediaButton.hidden = YES;
          selectedMedia.hidden = NO;
          cancelMediaChoiceButton.hidden = NO;
          whiteBackgroundMedia.hidden = NO;
  
          //Convert CGImage thumbnail to UIImage.
          UIImage * thumbnail = [UIImage imageWithCGImage:im];
  
          int checkSizeW = thumbnail.size.width;
          int checkSizeH = thumbnail.size.height;
          NSLog(@"Image width is %d", checkSizeW);
          NSLog(@"Image height is %d", checkSizeH);
  
          if (checkSizeW &gt;=checkSizeH) {
              //This is a landscape image or video.
              NSLog(@"This is a landscape image - will resize automatically");
          }
  
          if (checkSizeH &gt;=checkSizeW) {
              //This is a portrait image or video.
              selectedIntroHeight = thumbnail.size.height;
          }
  
          //Set the image once resized.
          selectedMedia.image = thumbnail;
  
          //Set out confirm button BOOL to YES and check if we need to display confirm button.
          mediaReady = YES;
          [self checkIfConfirmButtonShouldBeDisplayed];
  
          //[button setImage:[UIImage imageWithCGImage:im] forState:UIControlStateNormal];
          //thumbImg=[[UIImage imageWithCGImage:im] retain];
          [generator release];
      };
  
      CGSize maxSize = CGSizeMake(320, 180);
      generator.maximumSize = maxSize;
      [generator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:thumbTime]] completionHandler:handler];
  }
  
  }
  </code></pre>
  
  <p>The issue is that there is a delay of about 5-10 seconds in generating the thumbnail image. Is there anyway that I could improve the speed of this code and generate the thumbnail quicker ?</p>
  
  <p>Thank you.</p>