Method One: Avfoundation
1 #import<AVFoundation/AVFoundation.h>2 3-(UIImage *) Thumbnailimageforvideo: (Nsurl *) Videourl attime: (nstimeinterval) Time {4Avurlasset *asset =[[Avurlasset alloc] Initwithurl:videourl Options:nil];5 Nsparameterassert (asset);6Avassetimagegenerator *assetimagegenerator =[[Avassetimagegenerator alloc] initwithasset:asset];7Assetimagegenerator.appliespreferredtracktransform =YES;8Assetimagegenerator.aperturemode =Avassetimagegeneratoraperturemodeencodedpixels;9 TenCgimageref Thumbnailimageref =NULL; OneCftimeinterval Thumbnailimagetime =Time ; ANserror *thumbnailimagegenerationerror =Nil; -Thumbnailimageref = [Assetimagegenerator copycgimageattime:cmtimemake (Thumbnailimagetime, -) Actualtime:null error:&Thumbnailimagegenerationerror]; - the if(!thumbnailimageref) -Cximlog (@"Thumbnailimagegenerationerror%@", thumbnailimagegenerationerror); - -UIImage *thumbnailimage = thumbnailimageref?[[UIImage alloc]initwithcgimage:thumbnailimageref]: nil; + returnthumbnailimage; -}
Method Two: MPMoviePlayerController
1 #import <MediaPlayer/MediaPlayer.h>23 MPMoviePlayerController *movieplayer = [ [MPMoviePlayerController alloc] initwithcontenturl:videourl]; 4 movieplayer.shouldautoplay = NO; 5 UIImage *thumbnailimage = [MoviePlayer thumbnailimageattime:time timeoption: Mpmovietimeoptionnearestkeyframe];
Two ways for iOS to get a specified frame in a video