title: How to display video from ALAsset to UICollectionview ios
body: <p>I tried below code to get all videos from photo library by using <code>ALAsset</code>. For now, i want to display all videos to a <code>UICollectionview</code> but it doesn't seem to display anything. Please give me some advice. Thanks in advance.</p>
  
  <p>-ViewDidLoad() : get all videos from Photo Library</p>
  
  <pre><code>allVideos = [[NSMutableArray alloc] init];
  ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init];
  
  [assetLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop)
   {
       if (group)
       {
           [group setAssetsFilter:[ALAssetsFilter allVideos]];
           [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop)
            {
                if (asset)
                {
                    dic = [[NSMutableDictionary alloc] init];
                    ALAssetRepresentation *defaultRepresentation = [asset defaultRepresentation];
                    NSString *uti = [defaultRepresentation UTI];
                    NSURL  *videoURL = [[asset valueForProperty:ALAssetPropertyURLs] valueForKey:uti];
                    NSString *title = [NSString stringWithFormat:@"video %d", arc4random()%100];
                    UIImage *image = [self imageFromVideoURL:videoURL];
                    [dic setValue:image forKey:@"image"];
                    [dic setValue:title forKey:@"name"];
                    [dic setValue:videoURL forKey:@"url"];
                    [allVideos addObject:dic];
                    [_collectionView reloadData];
                }
            }];
       }
   }
   failureBlock:^(NSError *error)
  {
      NSLog(@"error enumerating AssetLibrary groups %@\n", error);
  }];
  </code></pre>
  
  <p>-imageFromVideoURL():</p>
  
  <pre><code>    - (UIImage *)imageFromVideoURL:(NSURL*)videoURL
  {
      // result
      UIImage *image = nil;
  
      // AVAssetImageGenerator
      AVAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL options:nil];;
      AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
      imageGenerator.appliesPreferredTrackTransform = YES;
  
      // calc midpoint time of video
      Float64 durationSeconds = CMTimeGetSeconds([asset duration]);
      CMTime midpoint = CMTimeMakeWithSeconds(durationSeconds/2.0, 600);
  
      // get the image from
      NSError *error = nil;
      CMTime actualTime;
      CGImageRef halfWayImage = [imageGenerator copyCGImageAtTime:midpoint actualTime:&amp;actualTime error:&amp;error];
  
      if (halfWayImage != NULL)
      {
          // CGImage to UIImage
          image = [[UIImage alloc] initWithCGImage:halfWayImage];
          [dic setValue:image forKey:@"name"];
           NSLog(@"Values of dictionary==&gt;%@", dic);
          NSLog(@"Videos Are:%@",videoURL);
          CGImageRelease(halfWayImage);
      }
      return image;
  }
  </code></pre>
  
  <p>Start to display all thumbnails of video to UICollectionView:</p>
  
  <pre><code> - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
  {
      return allVideos.count;
  }
  
  
  
  
   - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
      {
          UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
  
          NSLog(@"allvideo %@", allVideos);
          ALAsset *alasset = [allVideos objectAtIndex:indexPath.row];
  
          return cell;
      }
  </code></pre>