Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create thumbnail from a video url in IPhone SDK

I am trying to acquire a thumbnail from a video url. The video is a stream (HLS) with the m3u8 format. I've already tried requestThumbnailImagesAtTimes from the MPMoviePlayerController, but that didn't work. Does anyone have a solution for that problem? If so how'd you do it?

like image 671
MrCoinSiX Avatar asked Sep 21 '11 14:09

MrCoinSiX


People also ask

Is it possible to generate a thumbnail from a video URL in Android?

In android, we can use the MediaMetadataRetriever to retrieve a thumbnail image of an online video from its url. MediaMetadataRetriever can be used to retrieve frame and metadata from an input media file.

How do I make a thumbnail video in Swift?

Swift code to generate thumbnail from video URL:let frameImg = UIImage(cgImage: img!)


Video Answer


2 Answers

If you don't want to use MPMoviePlayerController, you can do this:

    AVAsset *asset = [AVAsset assetWithURL:sourceURL];     AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset];     CMTime time = CMTimeMake(1, 1);     CGImageRef imageRef = [imageGenerator copyCGImageAtTime:time actualTime:NULL error:NULL];     UIImage *thumbnail = [UIImage imageWithCGImage:imageRef];     CGImageRelease(imageRef);  // CGImageRef won't be released by ARC 

Here's an example in Swift:

func thumbnail(sourceURL sourceURL:NSURL) -> UIImage {     let asset = AVAsset(URL: sourceURL)     let imageGenerator = AVAssetImageGenerator(asset: asset)     let time = CMTime(seconds: 1, preferredTimescale: 1)      do {         let imageRef = try imageGenerator.copyCGImageAtTime(time, actualTime: nil)         return UIImage(CGImage: imageRef)     } catch {         print(error)         return UIImage(named: "some generic thumbnail")!     } } 

I prefer using AVAssetImageGenerator over MPMoviePlayerController because it is thread-safe, and you can have more than one instantiated at a time.

like image 72
Aaron Brager Avatar answered Sep 30 '22 12:09

Aaron Brager


Acquire a thumbnail from a video url.

    NSString *strVideoURL = @"http://www.xyzvideourl.com/samplevideourl";     NSURL *videoURL = [NSURL URLWithString:strVideoURL] ;     MPMoviePlayerController *player = [[[MPMoviePlayerController alloc] initWithContentURL:videoURL]autorelease];     UIImage  *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];     player = nil; 

Replace your video URL string with strVideoURL. You will get thumbnail as a output from video. And thumbnail is UIImage type data !

like image 32
Faizan Refai Avatar answered Sep 30 '22 13:09

Faizan Refai