How to create thumbnail in swift from a local video file ?
For example if the video file path is located here :
file:///Users/Dev/Library/Developer/CoreSimulator/Devices/F33222DF-D8F0-448B-A127-C5B03C64D0DC/data/Containers/Data/Application/4BC62DBF-0108-453C-9324-5BC0E356FE24/tmp/trim.059D11E6-F0EF-43DB-9E97-CA4F1F95D6B6.MOV
Thank you.
Translated with some edits from:
First frame of a video using AVFoundation
var err: NSError? = nil let asset = AVURLAsset(URL: NSURL(fileURLWithPath: "/that/long/path"), options: nil) let imgGenerator = AVAssetImageGenerator(asset: asset) let cgImage = imgGenerator.copyCGImageAtTime(CMTimeMake(0, 1), actualTime: nil, error: &err) // !! check the error before proceeding let uiImage = UIImage(CGImage: cgImage) let imageView = UIImageView(image: uiImage) // lay out this image view, or if it already exists, set its image property to uiImage
BaseZen's answer translated Swift 3 / Swift 4
You need to set the location of the video you want to make a thumbnail of as the url asset path, like:
Don't forget to import AVFoundation
func generateThumbnail(path: URL) -> UIImage? { do { let asset = AVURLAsset(url: path, options: nil) let imgGenerator = AVAssetImageGenerator(asset: asset) imgGenerator.appliesPreferredTrackTransform = true let cgImage = try imgGenerator.copyCGImage(at: CMTimeMake(value: 0, timescale: 1), actualTime: nil) let thumbnail = UIImage(cgImage: cgImage) return thumbnail } catch let error { print("*** Error generating thumbnail: \(error.localizedDescription)") return nil } }
For everyone having issues with this I have created the following drop in example hosted on Github
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With