Tag: thumbnail

  • iOS: Getting a Thumbnail for a Video

    iOS: Getting a Thumbnail for a Video

    smart phone taking a picture
    Credit: Pixabay / SplitShire

    Between various things being deprecated, and the new Photos framework (which looks cool but seemed a bit heavyweight for this purpose) finding this took me a while!

    When the image picker returns with a video it has a url in info[UIImagePickerControllerMediaURL]. Then we can use AVAsset and AVAssetGenerator to get a thumbnail.

    // Gets the asset - note ALAsset is deprecated, not AVAsset.
    AVAsset *asset = [AVAsset assetWithURL:mediaUrl];
    
    // Calculate a time for the snapshot - I'm using the half way mark.
    CMTime duration = [asset duration];
    CMTime snapshot = CMTimeMake(duration.value / 2, duration.timescale);
    
    // Create a generator and copy image at the time.
    // I'm not capturing the actual time or an error.
    AVAssetImageGenerator *generator =
        [AVAssetImageGenerator assetImageGeneratorWithAsset:asset];
    CGImageRef imageRef = [generator copyCGImageAtTime:snapshot
                                            actualTime:nil
                                                 error:nil];
    
    // Make a UIImage and release the CGImage.
    UIImage *thumbnail = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    
    // TODO: Do something with the image!

    Also useful when using the simulator: test videos. Download, open on the simulator, and then save via the share button as for images.

    This is something I was working on for Digital Fan Clubs.